0

新しい仕事から始めて、前任者が残したたくさんの文書を調べなければなりません。それらは、数百の特許に関する情報を含むMSWordファイルです。オンラインフォームですべての特許番号をコピーして貼り付けるのではなく、すべての特許番号をクリック可能なハイパーリンクに置き換えたいと思います。これはvbscriptで行う必要があると思います(私はMS Officeでの作業に慣れていません)。

私はこれまでに持っています:

<obsolete>

これは私にとってはうまくいきません:1。ActiveDocumentをループするために何かを追加する必要があります2. replace-functionはおそらくパラメータのオブジェクトではなく文字列を必要とします-vbscriptに__toString()はありますか?

THX!

更新:これは部分的に機能しています(正規表現と一致の検索)-hyperlink.add-methodのアンカーを正しく取得できれば...

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
4

2 に答える 2

0

これは VBA または VBScript ですか? VBScript では、 のような型を宣言することはできませんDim newText As hyperLinkが、すべての変数はバリアントであるため、それ以上のものはDim newTextありません。

objRegEx.Replace置換を含む文字列を返します。これには、元の文字列と、パターンを置き換えるテキストの 2 つのパラメーターが渡される必要があります。

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.IgnoreCase = False
objRegEx.Pattern = "^(WO|EP|US)([0-9]*)(A1|A2|B1|B2)$"

' assuming plainText contains the text you want to create the hyperlink for
strName = objRegEx.Replace(plainText, "$1$2$3")
strAddress = objRegex.Replace(plainText, "http://worldwide.espacenet.com/publicationDetails/biblio?DB=EPODOC&adjacent=true&locale=en_EP&CC=$1&NR=$2&KC=$3"

strNameこれで、 とを使用strAddressしてハイパーリンクを作成できます。
プロのヒント:objRegEx.Test(plainText)エラーを早期に処理するために、正規表現が何かに一致するかどうかを確認するために使用できます。

于 2013-02-15T14:47:33.437 に答える