14.VB6.0 から Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する |
1.VB6.0 から Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する 2.上記プログラム使用上の補足事項 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Word 2007/Word 2010(Word 2000〜Word 2003) Option :[Option Explicit] 参照設定:Microsoft Word *.* ObjectLibrary / Microsoft Scripting Runtime 参照設定方法参照 使用 API: その他 :ツール→オプション→全般→エラートラップで[エラー発生時に中断]以外にチェックを入れておいて下さい。 :Word の起動及び終了は、[VBからワードを起動・終了する]を使ってサンプルをテストして下さい。 |
1.VB6.0 から Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する |
下記コードは、11.VB6.0 からワードを起動・終了する基本操作例ができていて下記コードを追加するものとします。 Private Sub Command3_Click() '差し込み印刷設定してあるWordのファイルを開く場合 Call WordOpen(Fso.BuildPath(App.Path, "LabelPrint.doc")) Dim wdDoc1 As Word.Document Set wdDoc1 = wdApp.Documents(1) Dim csvFile As String Dim FilePath As String 'ご使用環境に合わせて設定して下さい。 'csvFile = "Address.csv" csvFile = "Address.xls" FilePath = Fso.BuildPath(App.Path, csvFile) '差込データファイル 'Word ファイルの拡張子を取得 Dim kts As String kts = Fso.GetExtensionName(FilePath) kts = LCase(kts) '拡張子を小文字で取得 With wdDoc.MailMerge If kts = "csv" Then '差し込み印刷のデータソースを取得 .OpenDataSource Name:=FilePath, SQLStatement:="SELECT * FROM " & csvFile ElseIf kts = "xls" Then '差込印刷のデータを設定(ExcelのSheet1 のテーブルに) wdDoc.MailMerge.OpenDataSource Name:=FilePath, _ SQLStatement:="SELECT * FROM [Sheet1$]" End If .MainDocumentType = wdFormLetters '差し込み印刷文書の種類を宛名ラベルに指定します。 .Destination = wdSendToNewDocument '差し込み文書の送り先を設定 .SuppressBlankLines = False 'Trueの場合は空白行は印刷されない '差し込み文書の送り先を設定(新規文書ファイルに) .Destination = wdSendToNewDocument .DataSource.FirstRecord = 1 '印刷するデータの範囲(最初のレコード) .DataSource.LastRecord = 12 '印刷するデータの範囲(最後のレコード) '.DataSource.LastRecord = -16 '全て印刷する場合は省略するか -16 で '指定された差し込み印刷を実行 .Execute End With Set wdDoc1 = wdApp.Documents("定型書簡1") '文書を印刷 印刷処理が終了するまで待機 wdDoc1.PrintOut Background:=False '差し込んだファイルを名前を変えて保存する場合(次回からこのファイルを印刷すればいいので) wdDoc1.SaveAs App.Path & "\LabelPrint01.docx" 'オブジェクトを解放します。 Set wdDoc1 = Nothing 'LabelPrint.doc は、保存しないで終了 Call WordClose(Fso.BuildPath(App.Path, "LabelPrint.doc"), False) 'False の場合保存しないで終了 End Sub 今回のサンプルは、Word 2007/Wowd 2010 で動作確認しましたが、このプログラム自体は、Word 2002 の当時に作ったもので、Word 2000 でも動作しておりましたので、Word 2000 以降なら動作するはずです。 |
2.上記プログラム使用上の補足事項 |
上記は、動作テスト用ですので、CSV ファイルと xls ファイルの両方を使えるようにしておりますが、ご使用環境に合わせて作り直して下さい。 又、印刷ラベル数は、Form 上から指定できるように設定して下さい。 1. "LabelPrint.doc" は別途 Word で下記のように差込フィールド等必要事項を設定したファイルを、各自用意して おいて下さい。(下記の設定でよければ下記よりダウンロードしてお使い下さい。) 下記の設定では用紙は[A-Oneの商品番号28183]を使って、印刷位置はLabelPrint.docで上25mm/左25mmに設定しております。 別のラベル用紙やレイアウト等を変更したい場合は、ご自分で作成しておいて下さい。 この手のサンプルプログラムは、Microsoftのサイト上にも幾つか掲載されているのでそれを使って見るのもいいかも。 2.住所録ファイルは、Excel 等を使って下記のような感じに、印刷時のレイアウトを考え適時スペース等を付加しておくと 綺麗に印刷できます。但し、Excel で CSV ファイルを作成すると、ダブルクォーテーションが付加されないので、差し込 み時にスペース文字が無視されるので注意して下さい。(別途、メモ帳で付加するとか、プログラムで付加するとか) 3.プログラム実行結果、下記のように差し込みが行われそれを指定のラベルに印刷します。 4.上記の差し込み結果のファイルを保存しておくと、次回からはこのファイルをラベル用紙に印刷するだけで済みますので よく使用する宛先だけの住所録作っておくとか、12枚分同じ宛先のを作っておく等すると結構便利に活用できます。 5.上記テスト用に使用した住所等は、架空のもので実在の企業とは関係がありません。 6.テストで使用したファイル、LabelPrint.doc/Address.xls は必要でしたら下記よりダウンロードしてテストして下さい。 LabelPrint.zip(13.7KB) |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
VB6.0 から Word を起動する VB6.0 から Word を終了する VB6.0 から ワード を起動する VB6.0 から ワード
を終了する VB6.0 から Word の文書ファイルの差し込み印刷する VB6.0 から Word の差し込み印刷 VB6.0による差し込み印刷機能 ラベルプリント ラベル印刷 宛名ラベル印刷 ラベルシール印刷 VBA Visual Basic for Applications |