【问题标题】:VBA Macro to Replace Endnotes in WordVBA 宏替换 Word 中的尾注
【发布时间】:2015-03-02 03:02:08
【问题描述】:

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

我有两个 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

【问题讨论】:

  • “占位符”是什么意思??
  • 我的意思是假尾注。像文档 1 将具有正确的正文内容,但尾注会说“尾注 1 到这里”。另一个文档的尾注 1 具有正确的值,我正在尝试替换它。

标签: vba ms-word


【解决方案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,等等...

【讨论】:

  • 谢谢!将立即检查。
  • 您的假设是正确的,我想将尾注 1 更改为尾注 1,将尾注 2 更改为尾注 2。此代码似乎没有更新任何内容。我已经更新了我的问题。我会继续努力的。
  • 是的,确实,它可以根据您的需要工作。我认为您需要设置wrdApp.Visible = true 来检查它是否有效。我这样做了,我确信它有效。
  • 就是这样!文档没有保存,也没有被更改。设置可见为真,它的工作原理!谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多