字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; (*)
变红了,不明白。
这里的问题是如何将变量的内容(用户选择的文本)与外卡结合起来,外卡将为我提供所选文本的实例,后跟括号,包括数字引用。
非常感谢。
答案 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