Я работаю с очень большими документами, которые содержат цитаты, добавленные вручную. Одна из моих задач - проверить, включены ли все цитаты в библиографию в конце документа. Эти текстовые ссылки приводятся в следующем формате:
- (Том и др. 2001)
- (Дик и Гарри 2007)
- (Джек и др. 2009; Джилл и др. 2011).
Я попытался написать макрос, который ищет в моем документе текст в перечисленных выше форматах, а затем перечисляет их в новом документе Word. В идеале я хотел бы применить этот макрос только к текущему выделенному тексту, а не ко всему документу.
Я написал строку поиска регулярного выражения для использования в макросе:
\(*[0-9]{4}\)
Но с учетом тестовой строки:
(AB C) лиса перепрыгивает через собаку (Том и др. 2001).
Я получаю результат :
(AB C) лиса перепрыгивает через собаку (Том и др. 2001)
Я хотел бы получить "Том и др. 2001" или "(Том и др. 2001)".
** Кто-нибудь может улучшить мою строку поиска или предложить лучший подход?
Весь мой макрос выглядит так:
Sub ExtractRefsFromSelection()
MsgBox ("This macro extracts references from selected text.")
Dim SearchRange As Range, DestinationDoc$, SourceDoc$
DestinationDoc$ = "Refs.doc"
SourceDoc$ = ActiveDocument.Name
Documents.Add DocumentType:=wdNewBlankDocument
ActiveDocument.SaveAs DestinationDoc$, wdFormatDocument
Documents(SourceDoc$).Activate
Set SearchRange = ActiveDocument.Range
With SearchRange.Find
.ClearFormatting
.Text = "\(*[0-9]{4}\)"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
While .Execute
Documents(DestinationDoc$).Range.Text = Documents(DestinationDoc$).Range.Text + SearchRange.Text
Wend
End With
End Sub
Заранее спасибо за любую помощь!