【Word VBA】Google PatentからPDFを取得する(その2)

2014年5月5日

以前、Google Patentを用いて米国特許のPDFファイルを自動でダウンロードする仕組みをご紹介しました。

【Wordマクロ】Google PatentからPDFを取得する

案外知られていませんが(笑)、けっこう便利です。セミナーで特許翻訳者の方々に紹介するとかなりの確率で喜んでいただけます。

先日のセミナーでもこのマクロをご紹介したのですが、使い方によってはエラーとなることがわかりまして、少し改造しました。

同じマクロでは面白くないので、今度は米国特許に限らず、欧州特許や国際特許(PCT出願)も対象としました。ただし、欧州特許や国際特許の場合にはファ イルのダウンロードではなく、検索結果ページ(ファイルのダウンロードボタンが掲載されていることもあります)を表示します。

▼このマクロでできること

インプットボックスに特許番号を入力すると、自動的にデスクトップにファイルがダウンロードされて保存されます。

なお、Wordファイルに記載された特許番号を選択した状態でマクロを実行すると、インプットボックスに特許番号を表示します。

▼マクロの解説

以前のマクロでは、Wordファイルで特許番号を選択した場合、改行記号などの編集記号が選択範囲の末尾に含まれるとダウンロードがうまくいかない場合がありました。

そこで、選択範囲の末尾に特定の編集記号が含まれている場合には、それらを除外するようにしました。(赤文字部分)

デスクトップのパスの取得方法は、青文字で書いた通りです。

ネットのPDFファイルの取得方法については、以前の記事 をご覧ください。Excel VBAの田中先生の記事(画像をダウンロードする )を参考にしました。

▼マクロ

新しい「標準モジュール」を挿入し、そのモジュールの先頭に記載してください。
こちらの記事 で新しい標準モジュールを挿入する方法を説明をしました。

Public Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

 

(2016/05/05に修正。64ビット版Wordに対応するように書き換えました)

#If VBA7 And Win64 Then
  '64ビット版
  Public Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#Else
  '32ビット版
  Public Declare Function URLDownloadToFile Lib "urlmon" _
  Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
  ByVal szURL As String, ByVal szFileName As String, _
  ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#End If

Sub Google_Patent_PDF_2()

Dim myFilePath As String '保存先
Dim myPatNum As String  '米国特許番号
Dim myDestTopPath As String 'デスクトップのパス
Dim myURL As String   'Google PatentのPDFファイルのURL
Dim Ret As Long

 Selection.MoveEndWhile _
Cset:=Chr(9) & Chr(11) & Chr(12) & Chr(13) & Chr(14), _
Count:=wdBackward

'特許番号のデフォルト値の取得(選択中の文字列です)
If Selection.Start = Selection.End Then
myPatNum = ""
Else
myPatNum = Selection.Text
End If

'特許番号の入力
myPatNum = InputBox("番号を入力してください。", "特許のPDFファイルの取得", myPatNum)
If myPatNum = "" Then Exit Sub

'コンマを削除
myPatNum = Replace(myPatNum, ",", "", Compare:=vbTextCompare)

'半角化
myPatNum = StrConv(myPatNum, vbNarrow)

'URLと保存用のデスクトップのパスを作成
myURL = "http://www.google.com/patents/" & myPatNum & ".pdf"
 myDestTopPath = CreateObject("Wscript.Shell").SpecialFolders("Desktop") & "\"

'ファイル名の設定
myFilePath = myDestTopPath & myPatNum & ".pdf"

'PDFファイルのダウンロードと保存実行(APIを利用)
Ret = URLDownloadToFile(0, myURL, myFilePath, 0, 0)
If Ret = 0 Then
MsgBox "ダウンロードできました"
Else
On Error Resume Next
myURL = "https://www.google.com/patents/" & myPatNum & "?hl=ja&cl=en"
ActiveDocument.FollowHyperlink Address:=myURL
If Err <> 0 Then
MsgBox "検索できませんでした。"
Else
MsgBox "検索結果を表示しました。"
End If
On Error GoTo 0
End If

End Sub

▼お知らせ

なんと、Office TANAKAの田中先生 が、5月15日(木)に翻訳者向けにJTFで講演されます!
行くしかないでしょ?

翻訳業務でExcelを効率よく使うには

▼関連記事

【Wordマクロ】Google PatentからPDFを取得する

画像をダウンロードする (Office TANAKAの記事)

エスパスネットを利用する

USPTOの特許DBからネイティブの英語を探す方法

-コード
-, ,