Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换Word中尾注的VBA宏_Vba_Ms Word - Fatal编程技术网

替换Word中尾注的VBA宏

替换Word中尾注的VBA宏,vba,ms-word,Vba,Ms Word,我希望使用宏来替换word文档中的尾注。以下是我的情况: 我有两个单词。两份文件的尾注数量完全相同。一个文档包含正确的正文内容,但有用于结尾注释的占位符。另一个文档的内容已过时,但有正确的尾注来填充第一个文档中的占位符 我在下面设置了一个宏,可以在正确的文件中循环所有尾注,然后打开下面另一个名为“old.docx”的文档。我只是不知道如何用ftstr的值替换old.docx中的尾注(请参见下文) 任何帮助都会很好 Sub endnoteReplacer() Dim ft As Endnote

我希望使用宏来替换word文档中的尾注。以下是我的情况:

我有两个单词。两份文件的尾注数量完全相同。一个文档包含正确的正文内容,但有用于结尾注释的占位符。另一个文档的内容已过时,但有正确的尾注来填充第一个文档中的占位符

我在下面设置了一个宏,可以在正确的文件中循环所有尾注,然后打开下面另一个名为“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

如果我没弄错,您需要在循环中添加以下简单解决方案:

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,它就会工作!!!非常感谢。