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