此問題與previous one有關。獲取Word書籤索引以替換Excel中的書籤內部圖像
我有一堆書籤,每個與先前從Excel導出Excel表格中的內嵌圖像的打開的Word文檔。
現在,我需要更新的Word文檔中的表格,因爲他們在Excel中發生了變化。
我這樣做的方式是匹配在Word中的書籤名稱在Excel表名。如果它們等於我想用當前的Word替換Word中現有的圖像。
這是到目前爲止我的代碼:
Option Explicit
Sub substituir()
Dim Mark As String
Dim Rng As Range
Dim ShpRng As Range
Dim WordApp As Object
Dim DocumentoDestino As Object
Dim folha As Worksheet
Dim tabela As ListObject
Dim nomeTabela As String
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, " ", "")
Mark = CStr(tabela.Name)
With ActiveDocument
If .Bookmarks.Exists(Mark) Then
Set Rng = .Bookmarks(Mark).Range ' returns runtime error 13: Type mismatch, I guess it is because .Bookmarks expects the bookmark index instead of the name.
If Rng.InlineShapes.Count Then
Set ShpRng = Rng.InlineShapes(1).Range
With ShpRng
Debug.Print .Start, .End
ShpRng.Delete
End With
End If
End If
End With
Next tabela
End If
Next folha
End Sub
的代碼似乎確定,除了上面標有該行返回運行時錯誤13,有沒有什麼辦法讓到書籤的索引而不是名稱或解決問題的另一種方法是什麼?
提前致謝!
謝謝,我的知識僅限於excel vba,並不像您的知識那麼強烈。我現在改進了變量聲明,但第二個if語句不計算任何內聯形狀。這裏有一個鏈接到word文檔https://portalg-my.sharepoint.com/personal/nuno_portalg_onmicrosoft_com/_layouts/15/guestaccess.aspx?docid=177a32a1ed0a745bb93598158acd0f2ee&authkey=AWS7Irv4EdU6TL7gb8ewFgE –
對不起,我不會下載你的文件,但謝謝你鮮花。然而,關於將InlineShape放入一個範圍內,您肯定比我有更多的經驗。我添加了計數功能,正是因爲我對如何做到這一點懷疑。然後,您的形狀必須位於書籤旁邊。使用Rng.Start和Rng.End,你可以在你想要的地方準確定義一個範圍。現在的問題是,如何添加書籤和InlineShape。也許另一個問題。你有沒有考慮使用形狀的標題? – Variatus
減少您的選擇。形狀有名字。 InlineShapes具有標題。爲什麼你放棄了這兩種選擇? InlineShapes具有索引號,這些索引號在加載時按照它們加載的順序排列。太不可靠?爲可能的InlineShape將是唯一的段落創建書籤。然後在書籤的段落中找到形狀。每個解決方案都有自己的問題。您不必面對所有選項的所有問題。 :-) – Variatus