【问题标题】:VBA Word searching for a line and replacing part of itVBA Word 搜索一行并替换它的一部分
【发布时间】:2021-02-05 20:48:03
【问题描述】:

我必须为我的同事快速编写一些程序,而我在以下方面被困了一段时间。目标是使用 MS Excel 中的数据填写 MS Word 模板。这是我最近遇到的问题。
MS Word 模板如下:

我们的想法是在左列(例如有机体)上搜索,取该行并将右列(单击此处输入文本)替换为 MS Excel 中的相应值。但我是 VBA 的新手,我不确定如何正确编程。我目前的代码是这个,它找到正确的左字符串,并将其替换为字符串 + MS Excel 值,但不在右列中替换。

Sub SearchAndReplace(inputKey As String, inputVar As String)
With Selection.Find
  .Text = inputKey
  .Replacement.Text = inputVar
  .Execute Replace:=wdReplaceOne, Forward:=True, _
  Wrap:=wdFindStop
End With    
End Sub

非常感谢您的帮助。如果有不清楚的地方,请随时提问。 提前谢谢你。

【问题讨论】:

    标签: vba replace ms-word


    【解决方案1】:

    您发布的屏幕截图没有明确项目是否在表格中,但确实表明存在内容控件。

    如果您使用标题和/或标签正确设置了内容控件,那么您可以使用以下内容:

    Sub AddTextToContentControl(targetDoc As Document, ccTitle As String, textToAdd As String)
      Dim ctrl As ContentControl
      Set ctrl = targetDoc.SelectContentControlsByTitle(ccTitle).Item(1)
      ctrl.Range.Text = textToAdd
    End Sub
    
    Sub AddTextToContentControlByTag(targetDoc As Document, ccTag As String, textToAdd As String)
      Dim ctrl As ContentControl
      Set ctrl = targetDoc.SelectContentControlsByTag(ccTag).Item(1)
      ctrl.Range.Text = textToAdd
    End Sub
    

    【讨论】:

    • 我不确定 Word 文档是否使用内容控制,它是在我之前制作的。我稍后会检查这个。我知道这是一个表格,每一行都是一个单元格,左列和右列之间用制表符隔开。
    • @Tomekke - 内容控件在您的屏幕截图中清晰可见。
    • 哦,好的,这些是内容控件。好吧,一旦我正确配置了它们,您的解决方案就会起作用!非常感谢您的帮助!
    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 2012-06-14
    • 2021-09-28
    • 1970-01-01
    • 2014-03-22
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多