VBA Word 搜索一行并替换其中的一部分
VBA Word searching for a line and replacing part of it
我必须快速为我的同事编写一些程序,并且我在下面卡住了一段时间。目标是使用来自 MS Excel 的数据来填充 MS Word 模板。这是最新的,我有问题。
MS Word模板如下:
我们的想法是在左列(例如 Organism)上进行搜索,获取该行并将右列(单击此处输入文本)替换为来自 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
非常感谢您的帮助。如果有什么不清楚,请随时询问。
提前谢谢你。
您发布的屏幕截图没有明确说明项目是否在 table 中,但确实显示有内容控件。
如果您已经使用标题 and/or 标签正确设置了内容控件,那么您可以使用如下内容:
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
我必须快速为我的同事编写一些程序,并且我在下面卡住了一段时间。目标是使用来自 MS Excel 的数据来填充 MS Word 模板。这是最新的,我有问题。
MS Word模板如下:
我们的想法是在左列(例如 Organism)上进行搜索,获取该行并将右列(单击此处输入文本)替换为来自 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
非常感谢您的帮助。如果有什么不清楚,请随时询问。 提前谢谢你。
您发布的屏幕截图没有明确说明项目是否在 table 中,但确实显示有内容控件。
如果您已经使用标题 and/or 标签正确设置了内容控件,那么您可以使用如下内容:
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