【问题标题】:Find and replace multiple words in Word在 Word 中查找和替换多个单词
【发布时间】:2016-06-10 15:50:24
【问题描述】:

我真的希望你们能提供帮助,我觉得我一直在努力解决应该(并且可能是)一个非常简单的问题。我编写了一个应用程序,它创建一个文件夹结构,根据用户输入复制相关的测试文档,并使用各种变量填充文档标题和测试表。我已经用占位符(“replCustNo”、“replPrjNo”、“replCustRef”等)填充了模板测试文档,一些在标题中,一些在文档正文中。我似乎一次只能替换一个单词,我找不到列出所有要查找的引用,然后列出所有替换变量的方法。似乎是一种非常笨拙的编码方式,一遍又一遍地查找/替换,或者为它调用一个子。

如果这真的很基本,请原谅我,我对编码很陌生,我非常感谢一些帮助!我正在使用 vb 和 Office 365

 Dim objWordApp As New Word.Application
    'Open an existing document.  
    Dim objDoc As Word.Document = objWordApp.Documents.Open(projFolder & "SAT\2 HV Tests\Flash.doc")

    objWordApp.ActiveDocument.Sections(1).Headers(1).Range.Select()
    objWordApp.Selection.WholeStory()
    With objWordApp.Selection.Find
        .Text = "replPrjNo"
        .Replacement.Text = RefNo
        .Forward = True
    End With
    objWordApp.Selection.Find.Execute(Replace:=Word.WdReplace.wdReplaceAll)

    'Save and close the document  
    objDoc.Save()
    objDoc.Close()
    objDoc = Nothing
    objWordApp.Quit()
    objWordApp = Nothing

【问题讨论】:

    标签: vb.net ms-word


    【解决方案1】:

    一个解决方案可以是文档变量。 在模板文档中选择一个占位符,然后Insert tab > Quick Parts > Field... > DocVariable > New name: replPrjNo

    然后在代码中:

    objDoc.Variables("replPrjNo").Value = RefNo
    objDoc.Fields.Update
    

    其他解决方案可以是书签、自定义文档属性、邮件合并或“开发人员”选项卡中的某些控件。

    【讨论】:

    • 这是一个极好的解决方案,非常干净!尽管我尝试了一个快速测试应用程序,但由于某种原因,页眉和页脚没有正确更新字段?每次变量更改后我都尝试过 {objDoc.Fields.Update} ... Word 正在注册变量,如果我手动打开 word 并右键单击以更新字段,它确实会更改为正确的值,但直到我这样做。我错过了什么?
    • @phil 如果在您保存文档时字段没有更新,请尝试objDoc.StoryRanges(wdPrimaryHeaderStory).Fields.Update
    • 就是这样,非常感谢!
    猜你喜欢
    • 2014-06-17
    • 2012-10-27
    • 2017-11-17
    • 2012-01-04
    • 2015-04-21
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多