Wordを使って「宛て名ラベル」を印刷する |
VBからWordの差し込み印刷機能を使って「宛て名ラベル」を印刷する (092) 動作確認:WindowsXP(SP2) VB6.0(SP6)/Word 2000/... 下記参照 |
|
"LabelPrint.doc" は各自用意しておいて下さい。 Word を使って LabelPrint.doc の中で用紙の設定や印刷設定をして、データを差し込んだらよい状態で保存しておいて下さい。 又、住所録のデータはExcelで作成したものを使うようにすると後々便利かと思います 私のサンプルはファイルシステムコントロールを使って住所録ファイルを選択できるようにして おりますが、ここでは長くなるのでその辺は省略してあります。 Option Explicit Private Sub Command3_Click() '★プロジェクト→参照設定でMicrosoft Word *.* Object Library に ' チェックを入れておいて下さい。 '================================================================== Dim wdApp As Word.Application Dim wdDoc As Word.Document Dim wdDoc1 As Word.Document Set wdApp = CreateObject("Word.Application") '差し込み印刷設定してあるWordのファイルを開く場合 Set wdDoc = wdApp.Documents.Open(App.Path & "\LabelPrint.doc") Set wdDoc1 = wdApp.Documents(1) Dim strMsg As String Dim AddressFile As String 'Excelの住所録ファイル名 Dim StrRcNo As String '印刷するレコードNo start Dim EndRcNo As String '印刷するレコードNo End 'ファイル名取得(ファイルシステムコントロールより取得) AddressFile = App.Path & "\Address.xls" '住所録ファイルの差し替え wdDoc.MailMerge.OpenDataSource Name:=AddressFile, _ LinkToSource:=True, Connection:="ワークシート全体" 'レコードNoの取得(各自設定して下さい) StrRcNo = Trim$(Text1.Text) EndRcNo = Trim$(Text2.Text) 'レコードNoのエラー処理及び初期設定 If Len(StrRcNo) = 0 Then StrRcNo = 1 'Default Else StrRcNo = CLng(Text1.Text) If Err.Number Then StrRcNo = 1 Err.Clear End If End If 'レコードNoのエラー処理及び初期設定 If Len(EndRcNo) = 0 Then EndRcNo = -16 '転載禁止'Default 最後まで Else EndRcNo = CLng(Text2.Text) If Err.Number Then EndRcNo = -16 '転載禁止 Err.Clear End If End If '差し込み印刷機能のオプションの設定 With wdDoc.MailMerge '転載禁止 .Destination = wdSendToNewDocument '差し込み文書の送り先を設定 .SuppressBlankLines = False 'Trueの場合は空白行は印刷されない With .DataSource '印刷するエクセルのシートのレコード範囲を設定 .FirstRecord = CLng(StrRcNo) '項目行を除いた最初の行 .LastRecord = CLng(EndRcNo) '上記から12行目まで End With '転載禁止 .Execute Pause:=True '転載禁止 '指定されたデータの差し込みを実行します。 End With '転載禁止 Set wdDoc1 = wdApp.Documents("定型書簡1") 'wdApp.Documents(1) '文書を印刷 印刷処理が終了するまで待機'載禁止 wdDoc1.PrintOut Background:=False '転載禁止 '印刷中のダイアログを非表示に設定 'wdDoc1.PrintOut Background:=True 'Do While wdApp.BackgroundPrintingStatus > 0 ' 'Loop '================================================================== 'Word の終了処理 '保存しないで終了転載禁止 wdApp.Quit SaveChanges:=wdDoNotSaveChanges ' オブジェクトを解放します。 Set wdDoc1 = Nothing '転載禁止 Set wdDoc = Nothing '転載禁止 Set wdApp = Nothing '転載禁止 End Sub LabelPrint.doc ファイルは差込印刷設定がすでにしてあるWordの文書ファイルです Address.xls ファイルは上記に合ったExcelの住所ファイルです。 従って、上記ファイルが別途用意できない方はこのサンプルは お試しにならないで下さい |
|
Excelで作成した住所録をよく使う宛て先だけ 6枚づつ 2社分 作ったりして色々保存しておいてVBから選択して印刷するようにしておけば結構使い道があるかと思います Word 2002 や Word 2007 でも上記プログラムで一応動作はしますが、[先頭行をタイトル行として使用する]の 問合せや、Word の差込印刷の画面が表示されたりします。 Word のバージョンによって、差込印刷の機能が少し変ってきているようなので、御使用環境で確認され、ご希望通り印刷されるかは各自、確認して下さい。 別途、No.260(Word2002) No.401(CSVファイルを使用 )にも同様の差込印刷のプログラムがあります 又、下記サイトの資料等にも目を通しておいて下さい。 [WD2002] 差し込み印刷にて Excel ファイルを利用すると先頭行が項目名として設定される http://support.microsoft.com/kb/814888/ja [WD2003] Visual Basic で Word の差し込み印刷を自動化する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;285332 [WD2003] [HOWTO] Visual Basic からオートメーションを使用して、Word の差し込み印刷で宛名ラベルを作成する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;258512 Visual Basic から Microsoft Word の差し込み印刷をオートメーションで実行する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;220607 SQL Server から取得した XML を使用してクライアント側で Word の差し込み印刷を実行する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;285176 [Word 2002] 差し込み印刷プログラムで Excel または Access をデータソースに指定すると [表の選択] ダイアログボックスが表示される http://support.microsoft.com/default.aspx?scid=kb;ja;289830 |