タイトル | : VB2005でワード差込印刷 |
記事No | : 8794 |
投稿日 | : 2009/03/10(Tue) 17:52 |
投稿者 | : ぷー |
環境=VB2005、ワード2002
はじめまして、いつも拝見させていただいてます。 どーしてもできないので質問させて下さい。よろしくお願いいたします。
既存エクセルデータより既存ワードを呼び出して差込印刷をしたいと思っております。 なお、既存ワードには差し込み設定がしてあります。
エクセルデータをデータ.xls ワードを文書.doc といたします。
エクセルデータの内容としては 項目名が 氏名・住所・一言 の3項目で データとしては 1レコード目 あ/東京/日本1(氏名/住所/一言) 2レコード目 い/大阪/日本2 3レコード目 う/福岡/日本3 の3レコードです。
事象としてはデータが挿入されず、<<氏名>>のような項目名ででてきてしまっており、 しかも1枚しかでてこないという事象です。(3枚でてきてほしい)
以下にソースを記載いたします。 このサイトの宛名ラベル印刷をみてコードを作成してみました。
Dim wdApp As Word.Application Dim wdDoc As Word.Document ' Dim wdDoc1 As Word.Document
wdApp = CType(CreateObject("Word.Application"), Word.Application)
Try
'差し込み印刷設定してあるWordのファイルを開く場合 wdDoc = wdApp.Documents.Open("\\A\e\フォルダ\文書.doc")
' wdDoc1 = CType(wdApp.Documents, Word.Document) '上のを変換
' wdDoc.MailMerge.MainDocumentType = wdFormLetters wdDoc.MailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters
'差込印刷のデータを設定(ExcelのSheet1 のテーブルに) wdDoc.MailMerge.OpenDataSource(Name:="\\A\e\フォルダ\データ.xls", LinkToSource:=True, SQLStatement:="SELECT * FROM `Sheet1$`") '差し込み印刷機能のオプションの設定 With wdDoc.MailMerge .Destination = Word.WdMailMergeDestination.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 'wdDoc1 = wdApp.Documents 'wdApp.Documents(1)
wdDoc.MailMerge.Execute(True)
wdDoc.PrintOut(Background:=True) Do While wdApp.BackgroundPrintingStatus > 0
Loop Catch MsgBox("エラー") Finally wdApp.Quit(SaveChanges:=Word.WdSaveOptions.wdDoNotSaveChanges)
' オブジェクトを解放します。 ' wdDoc1 = Nothing wdDoc = Nothing wdApp = Nothing End Try
気になっているのがwdDoc1です。 wdDoc1 = wdApp.Documents(1)だとエラーになってしまい、 wdDoc1 = CType(wdApp.Documents, Word.Document)のように直したところエラーなので wdDoc1に関しては全てコメントにしました。
何が悪いのかも良くわからない状況です。 至らない点は随時補足いたしますのでよろしくお願いいたします。
|