Vba 如何在文本引用中查找
我处理包含手动添加引用的非常大的文档。我的任务之一是检查文件末尾的参考书目中是否包含了所有引文。这些文内引用的格式如下:Vba 如何在文本引用中查找,vba,ms-word,Vba,Ms Word,我处理包含手动添加引用的非常大的文档。我的任务之一是检查文件末尾的参考书目中是否包含了所有引文。这些文内引用的格式如下: (Tom等人,2001年) (迪克和哈里2007) (Jack等人,2009年;Jill等人,2011年) 我试图编写一个宏,在我的文档中搜索上述格式的文本,然后在新的Word文档中列出它们。我想将此宏应用于当前选定的文本,而不是整个文档 我编写了一个正则表达式搜索字符串,用于宏: \(*[0-9]{4}\) 但考虑到测试字符串: (ABC)狐狸跳过狗(Tom等人,2001
\(*[0-9]{4}\)
但考虑到测试字符串:
(ABC)狐狸跳过狗(Tom等人,2001)
我得到的结果是:
(ABC)狐狸跳过狗(汤姆等人,2001年)
我想得到“Tom et al.2001”或“(Tom et al.2001)”
可以改进我的搜索字符串或方法吗
我的整个宏如下所示:
Sub-ExtractRefsFromSelection()
MsgBox(“此宏从选定文本中提取引用。”)
Dim SearchRange作为范围,DestinationDoc$,SourceDoc$
DestinationDoc$=“参考文件”
SourceDoc$=ActiveDocument.Name
文档。添加文档类型:=wdNewBlankDocument
ActiveDocument.SaveAs DestinationDoc$,wdFormatDocument
文档(SourceDoc$)。激活
设置SearchRange=ActiveDocument.Range
使用SearchRange.Find
.ClearFormatting
.Text=“\(*[0-9]{4}\)”
.Replacement.Text=“”
.Forward=True
.Wrap=wdFindStop
.Format=False
.MatchCase=False
.MatchAllWordForms=False
.MatchSoundsLike=False
.MatchWildcards=True
执行
Documents(DestinationDoc$).Range.Text=Documents(DestinationDoc$).Range.Text+SearchRange.Text
温德
以
端接头
更改:
.Text = "\(*[0-9]{4}\)"
致:
美丽的。非常感谢。
.Text = "\([!\)]@[0-9]{4}\)"