我想替换Word文档中的一些标签。我当前的解决方案未在文档页脚处实现替换/搜索。
我使用的单词模板具有2个不同的页脚(第一页与第二页页脚不同)。我想在第二页的页脚中进行一些更改。
'replacement regarding CHAPTER 1
For CurRow = Tabelle2.Range("C2") To Tabelle2.Range("C3")
If Tabelle2.Range("B" & CurRow).Value = "x" Then
ReplacementTextF = "<<TagToBeFound>>"
ReplacementText = "I am a customer"
dataObjectLongText.SetText ReplacementText
dataObjectLongText.PutInClipboard 'Copy to clipboard
With WordDoc.Content.Find
.Execute FindText:=ReplacementTextF, ReplaceWith:="^c", Replace:=2, Wrap:=wdFindContinue 'Paste from clipboard
End With
直到这里,一切都会正常进行。它查找所有文本并使用剪贴板替换它们(因为替换文本通常大于255个字符)。
要查看页脚,我在上面的代码之后立即尝试了此操作:
With WordDoc.Sections(1).Footers(1).Range.Find
.Execute FindText:=ReplacementTextF, ReplaceWith:="^c", Replace:=2, Wrap:=wdFindContinue 'Paste from clipboard
End With
我尝试了几种解决方案。这是我最后的方法。我引用了Word对象库。
答案 0 :(得分:1)
您似乎正在使用后期绑定,因此不能简单地使用wdFindContinue之类的Word常量;您需要声明它或使用其数值等效项。如果以前的“查找/替换”使用通配符和/或“查找”或“替换”参数的格式,则可能会引起其他复杂情况,因此重置它们是明智的。试试:
With WordDoc.Sections(1).Footers(1).Range.Find '1 = wdHeaderFooterPrimary
.ClearFormatting
.Replacement.ClearFormatting
.Text = ReplacementTextF
.Replacement.Text = "^c" 'Paste from clipboard
.Wrap = 1 'wdFindContinue
.MatchWildcards = False
.Execute Replace:=2 'wdReplaceAll
End With
或:
With ActiveDocument.StoryRanges(9).Find '9 = wdPrimaryFooterStory
.ClearFormatting
.Replacement.ClearFormatting
.Text = ReplacementTextF
.Replacement.Text = "^c" 'Paste from clipboard
.MatchWildcards = False
.Wrap = 1 'wdFindContinue
.Execute Replace:=2 'wdReplaceAll
End With
无论如何,由于页脚似乎显示的内容与替换文档正文中的ReplacementTextF的内容相同,因此,最好为每个ReplacementTextF分配一个唯一的Style名称,然后通过页脚中的STYLEREF字段。在模板中执行此操作。这样一来,您就无需在页脚中查找/替换。