2013-05-30 83 views
0

我希望用宏來替換word文檔中的尾註。這是我的情況:在Word中替換尾註的VBA宏

我有兩個單詞文檔。兩份文件都有相同數量的尾註。一個文檔充滿了正確的主體內容,但佔用了最終備註的佔位符。另一個文檔的內容已過時,但具有正確的註釋以填充第一個文檔中的佔位符。

我已經建立了一個宏,它可以遍歷正確文件中的所有尾註,然後在下面打開另一個名爲「old.docx」的文檔。我只是不知道如何使用ftstr的值替換old.docx中的尾註(請參閱下文)。

任何幫助將是偉大的!

Sub endnoteReplacer() 

Dim ft As Endnote 
Dim wrdApp As Object 
Dim wrdDoc As Object 

Dim r1 As Range, ftstr As String, mark 

    Set wrdApp = CreateObject("Word.Application") 
    wrdApp.Visible = False 
    Set wrdDoc = wrdApp.Documents.Open("C:\Desktop\old.docx") 

For Each ft In Word.ActiveDocument.Endnotes 

    ftstr = ft.Range.Text 

    wrdDoc.Endnotes(ft.Index).Range.Text = ftstr 

Next ft 

End Sub 
+0

你是什麼意思的'佔位符'? –

+0

我的意思是假的尾註。像文檔1將有正確的內容,但是尾註將會說「尾註1到這裏」。另一個文件具有正確的endnote 1值,我試圖替換它。 – Brandon

回答

1

如果我得到你的權利,你需要這個簡單的解決方案,以你的循環中添加:

For Each ft In Word.ActiveDocument.Endnotes 

    ftstr = ft.Range.Text 
    'change value of corresponding footnote in old.docx to value of ftstr 
    '!! new line !! 
    wrdDoc.Endnotes(ft.Index).Range.Text = ftstr 
Next ft 

但我認爲你需要改變尾註(1)到尾(1),2〜 2等...

+0

謝謝!會立即檢查出來。 – Brandon

+0

您的假設是正確的,我想將endnote 1更改爲endnote 1,endnote 2更改爲endnote 2.此代碼似乎沒有更新任何內容。我更新了我的問題。我會繼續努力。 – Brandon

+1

是的,的確如此,它可以滿足您的需求。我認爲你需要設置'wrdApp.Visible = true'來檢查它是否工作。我這樣做了,我確信它是有效的。 –