Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在文本引用中查找_Vba_Ms Word - Fatal编程技术网

Vba 如何在文本引用中查找

Vba 如何在文本引用中查找,vba,ms-word,Vba,Ms Word,我处理包含手动添加引用的非常大的文档。我的任务之一是检查文件末尾的参考书目中是否包含了所有引文。这些文内引用的格式如下: (Tom等人,2001年) (迪克和哈里2007) (Jack等人,2009年;Jill等人,2011年) 我试图编写一个宏,在我的文档中搜索上述格式的文本,然后在新的Word文档中列出它们。我想将此宏应用于当前选定的文本,而不是整个文档 我编写了一个正则表达式搜索字符串,用于宏: \(*[0-9]{4}\) 但考虑到测试字符串: (ABC)狐狸跳过狗(Tom等人,2001

我处理包含手动添加引用的非常大的文档。我的任务之一是检查文件末尾的参考书目中是否包含了所有引文。这些文内引用的格式如下:

  • (Tom等人,2001年)
  • (迪克和哈里2007)
  • (Jack等人,2009年;Jill等人,2011年)
  • 我试图编写一个宏,在我的文档中搜索上述格式的文本,然后在新的Word文档中列出它们。我想将此宏应用于当前选定的文本,而不是整个文档

    我编写了一个正则表达式搜索字符串,用于宏:

    \(*[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}\)"