Приступая к новой работе, мне приходится просматривать кучу документов, которые оставил мой предшественник. Это файлы MS Word, содержащие информацию о нескольких сотнях патентов. Вместо того, чтобы копировать/вставлять каждый отдельный номер патента в онлайн-форму, я хотел бы заменить все номера патентов интерактивными гиперссылками. Я предполагаю, что это должно быть сделано с помощью vbscript (я не привык работать с MS Office).
У меня есть до сих пор:
<obsolete>
Это не работает для меня: 1. Мне (вероятно) нужно что-то добавить для цикла через ActiveDocument 2. Функция замены, вероятно, нуждается в строке, а не в объекте для параметра - есть ли __toString() в vbscript?
СПАСИБО!
ОБНОВЛЕНИЕ: у меня это частично работает (регулярное выражение и поиск совпадений) - теперь, если бы я только мог правильно установить якорь для метода hyperlink.add...
Sub HyperlinkPatentNumbers()
'
' HyperlinkPatentNumbers Macro
'
Dim objRegExp, Matches, match, myRange
Set myRange = ActiveDocument.Content
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.IgnoreCase = False
.Pattern = "(WO|EP|US)([0-9]*)(A1|A2|B1|B2)"
End With
Set Matches = objRegExp.Execute(myRange)
If Matches.Count >= 1 Then
For Each match In Matches
ActiveDocument.Hyperlinks.Add Anchor:=objRegExp.match, Address:="http://worldwide.espacenet.com/publicationDetails/biblio?DB=EPODOC&adjacent=true&locale=en_EP&CC=$1&NR=$2&KC=$3"
Next
End If
Set Matches = Nothing
Set objRegExp = Nothing
End Sub
Anchor:=foo
. Попробуйте использовать нативную версию, в которой аргументы находятся в фиксированных местах:ActiveDocument.Hyperlinks.Add Anchor, Address, SubAddress, ScreenTip, TextToDisplay
. 15.02.2013If Matches.Count >= 1 Then
не нужен, потому что, если совпадений нет, выполнение просто провалится черезFor Each match In Matches
без обработки внутренних операторов. 15.02.2013