VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 Excel・Word・VBA関係のメニュー
1.VB2013 から Excel 2013 を操作する為の基本的な操作方法
2.Excel 操作ワンポイントテクニック集その1
3.Excel 操作ワンポイントテクニック集その2
4.VB2013から Excel にデータを送りグラフを表示する
5.Excel のグラフをクリップボード経由で PictureBox に貼付
6.Excel 2013 の WEB クエリを VB2013 から操作する
7.
8.
9.
10.
11.VB2013から Word の起動・終了処理及び文字の書き込み例
12.Wordの差し込み印刷機能を使って宛て名ラベルを印刷
13.
20.その他、当サイト内に掲載のExcel・Word・VBAに関するサンプル


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] として
  準備しておいて下さい。(下記住所等は架空の物です。実在するものとは、なんら関係ありません。)
  vb2005word01_01

3.差し込み用のレイアウトも、上記同様に事前に、Word の差し込みウィザードで差し込み設定をした下記のような
  ファイルを準備し、ファイル名を [Labelprint.docx] にしておいて下さい。
  vb2005word01_02

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)です。
 vb2005word01_03

6.余談
  上記コードは、Word 2013 で動作確認した物ですが、元々 Word 2002 等で使っていたコードを使っていますので
  参照設定を変更する程度でおおきな変更をせずに他のバージョンでも使用できるはずです。
  今回の投稿コードは、簡略化しておりますが、データファイルの選択・印刷設定等を付加する等すれば結構企業でも
  使い道が広がるかと思います。

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
差し込み印刷  宛名ラベル印刷 ワード 住所ラベル 宛名印刷 ラベル印刷
差し込みウィザード
CSVファイルを直接読み込んでの宛名ラベルの印刷


このページのトップへ移動します。