使用包含字符串变量

时间:2017-06-01 14:01:42

标签: vba ms-word wildcard substitution

字VBA程序员,

问题:在MS词中工作时,用户会选择一个字符串(一个或几个单词),只需" word1 word2"被选中。宏将在整个文档中查看是否存在这样的字符串,后跟括号中的引用,即" word1 word2(234,21)"。从用户选择文本的位置开始,将添加引用。 我有代码来获取所选文本: Dim Sel作为选择 昏暗功能As String

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 = feature&amp; (*)

变红了,不明白。

这里的问题是如何将变量的内容(用户选择的文本)与外卡结合起来,外卡将为我提供所选文本的实例,后跟括号,包括数字引用。

非常感谢。

3 个答案:

答案 0 :(得分:0)

.text = feature & "(*)"

您尝试连接字符串,需要将该字符串放在括号中 - 无需在此处转义括号,因为它不是正则表达式。

答案 1 :(得分:0)

对于搜索文本,请使用:

.text = feature & "\((*)\)"

在这里,\(与开幕式匹配; (*)执行“组”匹配(允许您在替换文本中使用通配符匹配);并且\)与结束时匹配。

对于替换文字使用:

.text = feature & "(\1)"

在这里,(与开幕式匹配; \1返回第一个匹配“group”(通配符拾取的内容);并且)与结束时匹配。

希望有所帮助。

答案 2 :(得分:0)

xidgel,

感谢。这非常强大。有用。我的印象是,通配符就像另一种语言。很难开始使用它们。

在任何情况下,我都意识到我还需要一种方法来向MS-WORD说明,从文本的特定点来说,有必要用括号中的引用替换父母参考文献中没有的特征,换句话说,添加对没有它们的特征的引用,并且仅从我选择的文本中添加。

Xidgel代码在真正找到引用所遵循的特征的意义上非常有效。

寻找文字时:

.text = feature & "\((*)\)"

我需要在变量中加载与

对应的字符串
"\((*)\)"

只需将此变量调暗为REF作为String 为了能够替代

.text = feature & "[A-z]"

=功能后跟一个字符,但后面没有PARENTHESES

通过

feature & Ref