从Excel中替换Word书签中的图像

时间:2017-04-25 09:50:11

标签: excel vba excel-vba ms-word word-vba

我有一个带有一堆书签的打开Word文档,每个书签都有一个以前从Excel导出的Excel表格的内嵌图像。

现在,我需要更新Word文档中的表格,因为它们已在Excel中更改。

我这样做的方法是将Excel中的表名与Word中的书签名匹配。如果它们等于我想要用当前的图像替换Word中的现有图像。

到目前为止,这是我的代码:

Sub substituir()
Set WordApp = GetObject(class:="Word.Application")
Set DocumentoDestino = WordApp.ActiveDocument

For Each folha In ThisWorkbook.Worksheets
    If folha.Visible Then

    'loop all excel tables
    For Each tabela In folha.ListObjects
        tabela.Name = Replace(tabela.Name, " ", "")
        nomeTabela = tabela.Name

        For Each myBookmark In DocumentoDestino.Bookmarks
            If Right(myBookmark.Name, 4) = "PGST" Then

              'This is where I need help
              If myBookmark.Name = nomeTabela Then
                'code to clear the table already in myBookmark here


                'then copy and paste tables in myBookmark
                tabela.Range.Copy
                myBookmark.Range.PasteSpecial link:=False, DataType:=wdPasteMetafilePicture, _
                    Placement:=wdInLine, DisplayAsIcon:=False

              End If
            End If
        Next myBookmark

     Next tabela

    End If
Next folha

End Sub

我尝试了很多不同的方法,从删除书签并将其重新添加回其他人,但似乎没有任何工作。

在评论中:'code to clear the table already in myBookmark here我需要帮助。

1 个答案:

答案 0 :(得分:1)

在以下代码中,我尝试包含您可能需要的项目语法。

Private Sub TestMark()

    Dim Mark As String
    Dim Rng As Range
    Dim ShpRng As Range

    Mark = "Text1"
    With ActiveDocument
        If .Bookmarks.Exists(Mark) Then
            Set Rng = .Bookmarks(Mark).Range
            If Rng.InlineShapes.Count Then
                Set ShpRng = Rng.InlineShapes(1).Range
                With ShpRng
                    Debug.Print .Start, .End
                End With
            End If
        End If
    End With
End Sub

当然,一旦你知道范围的开始和结束,你可以操纵它,意味着删除并替换它。

我觉得你可能会使用InlineShape'标题属性以查找和解决它。