12.Wordの差し込み印刷機能を使って宛て名ラベルを印刷(09_Xls_15) (旧、SampleNo.326) |
1.Word の差し込み印刷機能を使って宛て名ラベルを印刷 2. 3. 4. 5. 6. ※ 起動及び終了に関する設定は、Word の起動及び終了に関する基本設定 をご覧下さい。 |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 / Word 2013 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :Microsoft.Office.Interop 参照設定:Microsoft Word 15.0 ObjectLibrary / WaitTime.dll 参照設定方法参照 その他 :使用コン:Button1 トロール: このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.Word の差し込み印刷機能を使って宛て名ラベルを印刷(326) |
事前準備事項 1.Microsoft Word の差し込み印刷機能を使用しますので、Word を使って差し込み印刷をできない方は使用しないで下さい。 2.差し込み印刷するデータは、事前に Excel で下記のように作成して、ファイル名を [Address.csv] として 準備しておいて下さい。(下記住所等は架空の物です。実在するものとは、なんら関係ありません。) 3.差し込み用のレイアウトも、上記同様に事前に、Word の差し込みウィザードで差し込み設定をした下記のような ファイルを準備し、ファイル名を [Labelprint.docx] にしておいて下さい。 4.下記プログラムを実行する Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Wordの差し込みウィザードで設定した差し込み用のファイル Call WordOpen(IO.Path.GetFullPath("..\..\..\data\Labelprint.docx")) '============================================================================= Dim DataPath As String = System.IO.Path.GetFullPath("..\..\..\data\") 'Application.StartupPath() Dim csvFile As String = DataPath & "Address.csv" '差し込み用の住所が設定してあるCSVファイル Dim wdDoc1 As Word.Document = Nothing Dim wdMailMerge As Word.MailMerge = Nothing Dim wdDs As Word.MailMergeDataSource = Nothing Try 'テスト時は、コメントにして、動作確認の事 wdMailMerge = wdDoc.MailMerge With wdMailMerge '文書の差し込み印刷機能を設定 '差し込み印刷のデータソースを取得 .OpenDataSource(Name:=csvFile, SQLStatement:="SELECT * FROM " & csvFile) '差し込み文書の送り先を設定(新規文書ファイルに) .Destination = Word.WdMailMergeDestination.wdSendToNewDocument .DataSource.FirstRecord = 1 '印刷するデータの範囲(最初のレコード) wdDs = .DataSource '差し込み用のデータソースを取得 wdDs.LastRecord = 12 '印刷するデータの範囲(最後のレコード) 但し、ページ単位となる 'wdDs.LastRecord = -16 'すべて印刷する場合は省略するか -16 で .Execute() '指定したデータの差し込みを実行 End With wdDoc1 = wdApp.Documents.Item(1) '住所を差し込んだ状態を取得 '文書を印刷(印刷中のダイアログを表示しない(VB6.0 のNo.422 のサンプルより) wdDoc1.PrintOut(Background:=True) Do While wdApp.BackgroundPrintingStatus > 0 Loop '差し込んだファイルを名前を変えて保存 wdDoc1.SaveAs(Application.StartupPath & "\LabelPrint01.docx") Catch ex As Exception MessageBox.Show(ex.Message) Finally MRComObject(wdDs) MRComObject(wdMailMerge) MRComObject(wdDoc1) '============================================================================= 'Wordファイルを上書き保存(True 又省略すれば)して終了処理を実行 Call WordClose(IO.Path.GetFullPath(".\Labelprint.docx"), False) 'False の場合保存しないで終了 'WinWord.EXE がタスクマネージャーに残っていないか調査(実使用時は必要なし) WT.WaitTime(1000) Call ProcessCheck() End Try End Sub 5.上記実行結果、下記のようなデータが差し込まれたファイルができ、それを印刷します。 尚、使用したラベル用紙は(A-one 28183)です。 6.余談 上記コードは、Word 2013 で動作確認した物ですが、元々 Word 2002 等で使っていたコードを使っていますので 参照設定を変更する程度でおおきな変更をせずに他のバージョンでも使用できるはずです。 今回の投稿コードは、簡略化しておりますが、データファイルの選択・印刷設定等を付加する等すれば結構企業でも 使い道が広がるかと思います。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
差し込み印刷 宛名ラベル印刷 ワード 住所ラベル 宛名印刷 ラベル印刷 差し込みウィザード CSVファイルを直接読み込んでの宛名ラベルの印刷 |