VBA Microsoft for MSword 宏使用包含字符串变量的通配符
VBA Microsoft for MSword Macro using a wildcard including a string variable
字VBA个程序员,
问题:在 MS word 中工作时,用户会 select 一个字符串(一个或几个单词),假设 "word1 word2" 是 selected。如果有这样一个字符串后跟括号中的引用,即 "word1 word2 (234, 21)",宏将在整个文档中查找。从用户 select 编辑文本开始,将添加引用。
我有获取 selected 文本的代码:
点亮选择作为选择
暗淡特征作为字符串
Set Sel = Application.Selection
If Sel.Type <> wdSelectionIP Then
MsgBox Sel.text
End If
feature=sel.text
(特征是要查找的文本后跟参考文献)
方括号中文本的通配符是 (*),这意味着括号后跟任何更改,然后是右括号。
我的问题是以下代码不起作用:
With ActiveDocument.Content.Find
.ClearFormatting
.text = feature & \(*\)
With .Replacement
.ClearFormatting
.text = feature & \(*\)
.Font.Color = wdColorRed
End with
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = true
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
我什至不能 运行 因为线
.text = 特征 & (*)
变红,不理解。
这里的问题是如何将变量的内容(用户 selected 的文本)与通配符结合起来,该通配符会给我 selected 文本后跟括号的实例包括数字引用。
非常感谢。
.text = feature & "(*)"
您正在尝试连接一个字符串,您需要将该字符串放在括号中 - 此处无需转义括号,因为它不是正则表达式。
搜索文本使用:
.text = feature & "\((*)\)"
这里,\(
匹配左括号; (*)
进行 "group" 匹配(允许您在替换文本中使用通配符匹配项); \)
匹配右括号。
替换文本使用:
.text = feature & "()"
这里,(
匹配左括号; </code> returns what 第一个匹配 "group" (通配符拾取的是什么); <code>)
匹配右括号。
希望对您有所帮助。
xidgel,
谢谢。这是非常强大的。有用。我的印象是通配符就像另一种语言。很难开始使用它们。
在任何情况下,我意识到我还需要一种方法来对 MS-WORD 说,从文本中的特定点开始,必须用括号中的引用替换括号中引用未遵循的特征括号,换句话说,添加对没有它们的功能的引用,并且仅来自我选择的文本。
Xidgel 代码在真正找到参考文献所遵循的特征的意义上完美工作。
在查找文本时:
.text = feature & "\((*)\)"
我需要在变量中加载对应于
的字符串
"\((*)\)"
只需将此变量称为 dim REF as String
为了能够替代 then
.text = feature & "[A-z]"
=特征后跟一个字符,即不后跟括号
来自
feature & Ref
字VBA个程序员,
问题:在 MS word 中工作时,用户会 select 一个字符串(一个或几个单词),假设 "word1 word2" 是 selected。如果有这样一个字符串后跟括号中的引用,即 "word1 word2 (234, 21)",宏将在整个文档中查找。从用户 select 编辑文本开始,将添加引用。 我有获取 selected 文本的代码: 点亮选择作为选择 暗淡特征作为字符串
Set Sel = Application.Selection
If Sel.Type <> wdSelectionIP Then
MsgBox Sel.text
End If
feature=sel.text
(特征是要查找的文本后跟参考文献)
方括号中文本的通配符是 (*),这意味着括号后跟任何更改,然后是右括号。
我的问题是以下代码不起作用:
With ActiveDocument.Content.Find
.ClearFormatting
.text = feature & \(*\)
With .Replacement
.ClearFormatting
.text = feature & \(*\)
.Font.Color = wdColorRed
End with
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = true
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
我什至不能 运行 因为线 .text = 特征 & (*)
变红,不理解。
这里的问题是如何将变量的内容(用户 selected 的文本)与通配符结合起来,该通配符会给我 selected 文本后跟括号的实例包括数字引用。
非常感谢。
.text = feature & "(*)"
您正在尝试连接一个字符串,您需要将该字符串放在括号中 - 此处无需转义括号,因为它不是正则表达式。
搜索文本使用:
.text = feature & "\((*)\)"
这里,\(
匹配左括号; (*)
进行 "group" 匹配(允许您在替换文本中使用通配符匹配项); \)
匹配右括号。
替换文本使用:
.text = feature & "()"
这里,(
匹配左括号; </code> returns what 第一个匹配 "group" (通配符拾取的是什么); <code>)
匹配右括号。
希望对您有所帮助。
xidgel,
谢谢。这是非常强大的。有用。我的印象是通配符就像另一种语言。很难开始使用它们。
在任何情况下,我意识到我还需要一种方法来对 MS-WORD 说,从文本中的特定点开始,必须用括号中的引用替换括号中引用未遵循的特征括号,换句话说,添加对没有它们的功能的引用,并且仅来自我选择的文本。
Xidgel 代码在真正找到参考文献所遵循的特征的意义上完美工作。
在查找文本时:
.text = feature & "\((*)\)"
我需要在变量中加载对应于
的字符串"\((*)\)"
只需将此变量称为 dim REF as String 为了能够替代 then
.text = feature & "[A-z]"
=特征后跟一个字符,即不后跟括号
来自
feature & Ref