Word2002で「宛て名ラベル」を印刷 |
VBからWord2002の差し込み印刷機能を使って「宛て名ラベル」を印刷する (260) 動作確認:WindowsXP(SP2) VB6.0(SP6)/Word 2002/Word 2007 下記参照 |
|
"LabelPrint.doc" は別途Word2002で下記のように差込フィールド等必要事項を設定した ファイルを、各自用意しておいて下さい。 Address.xls ファイルは下記のようにExcelで作成しておいて下さい。シート名は 共通のシート名(Sheet1 等)を使用するようにして下さい。 ここでの項目名(住所No.1等)が上記のフィールド名になります。 (下記住所等は架空の物です。実在するものとは、なんら関係ありません。) |
|
Option Explicit Private Sub Command1_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) '転載禁止 wdDoc.MailMerge.MainDocumentType = wdFormLetters '差込印刷のデータを設定(ExcelのSheet1 のテーブルに)転載禁止 wdDoc.MailMerge.OpenDataSource Name:=App.Path & "\Address.xls", _ SQLStatement:="SELECT * FROM [Sheet1$]" '転載禁止 '差し込み印刷機能のオプションの設定 With wdDoc.MailMerge '転載禁止 .Destination = wdSendToNewDocument '差し込み文書の送り先を設定 .SuppressBlankLines = False 'Trueの場合は空白行は印刷されない With .DataSource '印刷するエクセルのシートのレコード範囲を設定 .FirstRecord = CLng(1) '項目行を除いた最初の行 .LastRecord = CLng(12) 'A4 1枚分だけ(12シート分) ' .LastRecord = CLng(-16) 'Default 最後のデータまで End With .Execute Pause:=True '転載禁止 '指定されたデータの差し込みを実行します。 End With '転載禁止 Set wdDoc1 = wdApp.Documents("定型書簡1") 'wdApp.Documents(1) '文書を印刷(印刷中のダイアログを表示しない No.422 のサンプルより) 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 |
|
ご使用される場合は、必ず一度上記設定のまま問題がないか動作確認してから変更して下さい。 又、Word2002を使ってWord2002上で差込印刷ができる方が使って下さい。 よく、サンプルを使ったのですがうまく動きませんと言った質問を受けるのですが、むやみに変更・改造されますとWordやExcel内でエラーが発生したり、動かなくなったり、メモリに残ったりします。 設定を変更したためにうまく動かなくなったのか、動作環境が違う為にうまく動かなくなったのをハッキリさせて下さい。 一応このコードでWord2000/Excel2000の環境でも動作致します。が、差込設定用のファイルとデータとの連携がうまく行かず、一度目は内部エラーが発生する場合があります。Word2000では、使用されない方が無難かと思います。 WindowsXP Word2002 Excel2002 VB6.0(SP) の環境で作成・動作確認を行っております。 別途、No.092(Word2000) No.401(CSVファイルを使用 )にも同様の差込印刷のプログラムがあります VBからWordの差し込み印刷機能を使って「宛て名ラベル」を印刷する (092) の下部の注意事項も参考にして下さい。 |