vba - 用内容控件对象替换 word 文档中的文本
问题描述
我有许多带有括号内可变词的文档,如下所示:
[my_word]
我的代码已经找到了所有这些词,我将它们保存为字符串。
现在我需要一个函数来用 ContentControl 元素替换这个字符串。这可能吗?因为我首先需要生成一个元素,然后改变里面的文字和它的标签,都用[my_word]
.
任何帮助表示赞赏。
解决方案
到目前为止,我的代码看起来像这样(现在可以一次用一个控制元素替换一个单词;我想替换宏内部的所有内容。Word 告诉我不可能替换多个选择,所以我会必须手动重新运行此宏多次..)
Sub ReplaceTags()
'
' ReplaceTags Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "\<?*\>"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute
Selection.Range.ContentControls.Add (wdContentControlText)
End Sub
编辑:我对我的代码做了一些工作,并找到了一个解决方案来替换我正在寻找的文本:
Sub ReplaceTags()
'
' ReplaceTags Macro
'
'
With Selection.Find
.ClearFormatting
.Text = "\<?*\>"
.Execute Forward:=True
.MatchWildcards = True
End With
If Selection.Find.Found = True Then
Selection.Range.ContentControls.Add (wdContentControlText)
Selection.ParentContentControl.Tag = Selection.Text
End If
End Sub
我仍然不太确定如何在完整文档上执行此操作而不必多次单击“运行宏”
编辑(编辑):我解决了。如果将来有人遇到同样的问题:
Sub ReplaceAllTags()
'
' ReplaceAllTags Macro
'
'
For i = 0 To ActiveDocument.Words.Count
Selection.EscapeKey
Application.Run MacroName:="ReplaceTags"
Next
End Sub
ReplaceTags() 与上面的函数相同。
推荐阅读
- c# - 使 DateTime.Now 在 Linux 上全局显示欧洲格式
- c - 将 ptr ptr 转换为 Nim 数组
- react-native - React Native FlatList 删除项
- ios - 可扩展的 Tableview 与 sectionHeader 一起使用
- c++ - g++ -O3 为循环创建奇怪的指令
- matlab - 如何通过 Simulink 中的输入值更改查找表参数?
- angular - 我们如何从离子选择的下拉菜单中删除插入符号。我不想显示任何图标。应该只显示文本
- vb.net - 为什么用 vb.net 创建的相同像素大小的 .bmp 文件具有不同的文件大小?
- javascript - 获取 ngFor 根据名称重复数据
- ruby-on-rails - 有人有将 Avatara AvaTax 集成到条纹发票中的经验吗?