[SQL] PATDATAを活用しよう(3)

宛名等差し込み印刷

今までは、Microsoft ExcelのVBAを使って本日期限や、案件検索といったPATDATAの活用法を紹介してきました。今回は、Microsoft Wordの差し込み印刷機能を使って宛名、件名等の入力を自動化する機能を紹介します。Excelが、期限管理等のデータの一覧性に優れたソフトなら、Wordは、正に手紙等の文書作成に秀でたソフトではないでしょうか。

利用シーン

特許事務所では、問合わせ、確認、及び報告等出願人とのやり取りが必須です。カバーレター等は、テンプレート化されているとは思いますが、カバーレターを作るには、各案件の出願番号や、整理番号、及び発明の名称等を入力して、案件を特定しなければなりません。その際にいちいち手で入力していたのでは、入力ミスがなかったのかもう一度見直す手間が発生します。

そこで今回は、PATDATAのデータベースから直接出願番号等を取り込む機能を紹介します。

Microsoft Wordの差し込み印刷

差し込み印刷の詳しい説明は、Wordのマニュアルをご確認いただくか、Google等で検索していただけるようお願いします。簡単に差し込み印刷機能を紹介すると、Word文書にExcelやAccessのデータベースなど、データ一覧になっている文書やDBから、そのフィールドのデータを1レコードずつ読み込んで表示する機能です。Excelに住所録などを作っている場合、宛名、住所、電話番号の1レコードずつを表示してくれる機能です。

Visual Basic 部分

それでは、まずWordのVBAコードを見ていきます。Excelと同様に、Alt + F11を押して、VBエディターを立ち上げます。左側にツリービューが表示されるので、スクリプトを記載する[Microsoft Word Objects] > [This Document]をクリックして、表示されたコード記入部分に以下のスクリプトをコピペします。

Sub numberSearch2()
 Dim objDoc As Word.Document '差し込みを行うWord文書のオブジェクト
 Dim strSQL As String
 Dim strNum As String
 
 'テキスト入力領域を表示
 strNum = InputBox("整理番号を入力してください。")
 If strNum = "" Then
 Exit Sub  '入力がなかった場合、終了
 End If
' 入力された文字を基づいて案件を検索
 strSQL = "Select M受付.当方整理番号, M出願手続.名称・日本語 As 発明の名称, M出願手続.出願日 From M出願準備 Inner Join M受付 On M出願準備.SYSID = M受付.SYSID Inner Join M出願手続 On M受付.SYSID = M出願手続.SYSID Where M受付.当方整理番号 Like '%" & strNum & "%' And M出願準備.国コード = 'JP' And M出願準備.法域コード = '01'"
 
 ' 選択されている文書の差し込み印刷機能を利用する。
 Set objDoc = Application.ActiveDocument
 If Len(strSQL) > 256 Then
 Exit Sub
 End If
 
 '# 整理番号と、発明の名称と、出願日とを取得し、フィールドに反映する
 With objDoc.MailMerge
 .OpenDataSource Name:="", _
 Connection:="DSN=PDWREAD", _
 SQLStatement:=strSQL, _
 SubType:=wdMergeSubTypeWord2000
 .ViewMailMergeFieldCodes = False
 End With
 ' Word文書の変数を解放する
 Set objDoc = Nothing
End Sub

InputBox()関数を使って、ユーザーからの入力を受け付ける部分は、前回の案件検索と同様です。異なるのは、タイトルが、Microsoft Excelから、Microsoft Wordになっているくらいでしょうか。ユーザーからの入力を待ち受ける点では、同じで、なんら変わりはありません。

「Dim objDoc As Word.Document」及び「Set objDoc = Application.ActiveDocument」で差し込み印刷を行うWord文書を特定します。今回は、現在開いている文書を選んでいます。 「With objDoc.MailMerge」から「End With」の部分が、差し込み印刷の設定部分です。ExcelのときのようにODBC経由でデータベースにアクセスします。SQLStatementにSQL文を代入します。今回は、strSQLの文字列を256文字で制限しています。実は、差し込み印刷を行うためのMailMergeのSQL文の長さが256文字と制限されているために文字列の長さをチェックしています。256文字は以外に短く、PATDATAのテーブルは、構成が細かく分けられている(設計としては正しいと思うのですが)ので様々なテーブルをJoinせざるを得ないため意外とこの256文字制限にひっかかってしまいます。かなり厳しい制約だと思います。レター毎にSQLを用意する必要があると思います。

SQL部分

SQL部分は、前回の案件検索と同じです。入力文字「A1」に対して、整理番号、発明の名称、及び出願日を出力します。

Select M受付.当方整理番号, M出願手続.名称・日本語 As 発明の名称, M出願手続.出願日 
From M出願準備 
  Inner Join M受付 On M出願準備.SYSID = M受付.SYSID 
  Inner Join M出願手続 On M受付.SYSID = M出願手続.SYSID 
Where M受付.当方整理番号 Like '%A1%' 
  And M出願準備.国コード = 'JP' 
  And M出願準備.法域コード = '01'

 

Word差し込み印刷

次に、Wordの差し込み印刷機能の説明です。まず、上記マクロを実行します。次に、WordのリボンUIの[差し込み文書]の[差し込みフィールドの挿入]をクリックします。すると、検索結果の当方整理番号、発明の名称、及び出願日が、タイトルとして表示されるので、それぞれ挿入していきます。今回は、飾り気のないWordに貼り付けていますが、レターとして成型し、タイトルが適切な位置に入るように設定してください。以上で差し込み印刷設定も終了です。

結果表示

では、[結果のプレビュー]をクリックしてみましょう。検索結果の第一候補が表示されています。[結果のプレビュー]の隣にあるコントロールのようなボタンで検索結果の案件を前後に送ることができます。コントロールで前後に動かすと、整理番号、発明の名称、及び出願日も変化します。同じ内容のレターをどんどん作成できます。しかもミスなしに。

PATDATAを導入したら、思いきり使いまくるのはいかがでしょうか。しかもInterSystemsのドライバーは無償で提供されています。PATDATA自体は、全PCにインストールできませんが、ドライバーは、可能です。是非、活用しましょう。

では、「PATDATAを活用しよう」第3回は、これにて終了です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメント

お名前 *

ウェブサイトURL