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

リンク元へ戻ります。 Excel・Word 関係のメニュー
1.VBからExcel及びWordを操作する時の注意事項
2.VBからエクセルを起動・終了する基本操作例
3.上記、基本操作例を使ってのVBからExcel にデータを送りグラフを表示
4.Excel ワンポイントテクニック集
5.Excel 2007 以降のリボンを操作する及びユーザーからの操作を禁止する
6.指定のセル範囲の列幅・行の高さを含めてコピー・アンド・ペーストする
7.
8.
9.
10.
11.VB6.0 からワードを起動・終了する基本操作例
12.Word の既存ファイルを読み込み検索・置き換え後保存する
13.VB6.0からExcel/Wordを起動しExcelの表をWordに貼付印刷する
14.VBから Word の差し込み印刷機能を使って[宛て名ラベル]を印刷する
15.Word の Tasks プロパティを使ってのタスク(プロセス)の一覧を取得・他
16.Word VBA 簡易リファレンス及び使用例
17.
18.
19.
20.


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のサイト上にも幾つか掲載されているのでそれを使って見るのもいいかも。
 word04_01

2.住所録ファイルは、Excel 等を使って下記のような感じに、印刷時のレイアウトを考え適時スペース等を付加しておくと
  綺麗に印刷できます。但し、Excel で CSV ファイルを作成すると、ダブルクォーテーションが付加されないので、差し込
  み時にスペース文字が無視されるので注意して下さい。(別途、メモ帳で付加するとか、プログラムで付加するとか)
 word04_02

3.プログラム実行結果、下記のように差し込みが行われそれを指定のラベルに印刷します。
 word04_03
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


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