替换Word中尾注的VBA宏
我希望使用宏来替换word文档中的尾注。以下是我的情况: 我有两个单词。两份文件的尾注数量完全相同。一个文档包含正确的正文内容,但有用于结尾注释的占位符。另一个文档的内容已过时,但有正确的尾注来填充第一个文档中的占位符 我在下面设置了一个宏,可以在正确的文件中循环所有尾注,然后打开下面另一个名为“old.docx”的文档。我只是不知道如何用ftstr的值替换old.docx中的尾注(请参见下文) 任何帮助都会很好替换Word中尾注的VBA宏,vba,ms-word,Vba,Ms Word,我希望使用宏来替换word文档中的尾注。以下是我的情况: 我有两个单词。两份文件的尾注数量完全相同。一个文档包含正确的正文内容,但有用于结尾注释的占位符。另一个文档的内容已过时,但有正确的尾注来填充第一个文档中的占位符 我在下面设置了一个宏,可以在正确的文件中循环所有尾注,然后打开下面另一个名为“old.docx”的文档。我只是不知道如何用ftstr的值替换old.docx中的尾注(请参见下文) 任何帮助都会很好 Sub endnoteReplacer() Dim ft As Endnote
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
如果我没弄错,您需要在循环中添加以下简单解决方案:
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,等等。如果我没弄错,您需要在循环中添加以下简单解决方案:
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,等等。您所说的“占位符”是什么意思?我是指假尾注。像文档1一样,它的正文内容正确,但尾注会显示“尾注1到此为止”。另一个文档的尾注1的值正确,我正在尝试替换它。你说的“占位符”是什么意思?我指的是假尾注。像文档1一样,它的正文内容正确,但尾注会显示“尾注1到此为止”。另一个文档的尾注1值正确,我正在尝试替换它。谢谢!我马上会查出来。你的假设是正确的,我想把尾注1改成尾注1,尾注2改成尾注2。但这段代码似乎没有更新任何内容。我已经更新了我的问题。我会继续用它的。是的,的确,它能满足你的需要。我认为您需要设置
wrdApp.Visible=true
来检查它是否工作。我这样做了,我相信它会起作用。就是这样!文档未保存,也未被更改。将visible设置为true,它就会工作!!!非常感谢。谢谢我马上会查出来。你的假设是正确的,我想把尾注1改成尾注1,尾注2改成尾注2。但这段代码似乎没有更新任何内容。我已经更新了我的问题。我会继续用它的。是的,的确,它能满足你的需要。我认为您需要设置wrdApp.Visible=true
来检查它是否工作。我这样做了,我相信它会起作用。就是这样!文档未保存,也未被更改。将visible设置为true,它就会工作!!!非常感谢。