@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

VB.NetでWord差込印刷

1
投稿者投稿内容
もにゅめん
会議室デビュー日: 2006/09/07
投稿数: 3
投稿日時: 2006-12-07 13:42
いつもお世話になっております。

 .Net1.0にて、「D:\aa\\word.doc」内のWordの差込印刷を利用して
 (フィールド名はあらかじめWord.docで記述してある)、
 「D:\aa\excel.xls」のレコードを元に差込印刷を行おうとしています。

 以下のソースにて、紙は印刷されますが、
 真っ白な紙が出てしまいます。

 もし、原因・もしくは原因を追究するための方策がわかりましたら、
 ご教授頂ければと思います。

 wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
wrdDoc = wrdApp.Documents.Add()
wrdMailMerge = wrdDoc.MailMerge()
wrdApp.Documents.Open("D:\aa\\word.doc")
wrdMailMerge.OpenDataSource(name:="D:\aa\excel.xls", LinkToSource:=True,   SQLStatement:="SELECT * FROM `Sheet1$`")
wrdMailMerge.DataSource.FirstRecord = CLng(1)
wrdMailMerge.DataSource.LastRecord = CLng(-16)
wrdMailMerge.SuppressBlankLines = True
wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument
wrdMailMerge.Execute(True)
wrdApp.ActiveDocument.PrintOut(Background:=False)

 以上、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-07 14:59
引用:

もにゅめんさんの書き込み (2006-12-07 13:42) より:

以下のソースにて、紙は印刷されますが、真っ白な紙が出てしまいます。
もし、原因・もしくは原因を追究するための方策がわかりましたら、ご教授頂ければと思います。


まずは、マクロの方で動作を確認することをお勧めします。

引用:

wrdApp = CreateObject("Word.Application")


できれば、型は明示化しておきましょう。
Object -> Word.Application

以降、本題とは別のところで気になったところを書きます。

引用:

wrdDoc = wrdApp.Documents.Add()
(snip)
wrdApp.Documents.Open("D:aa\word.doc")


Word.Documents の参照も取るようにしておきましょう。
COM の参照カウントのデクリメントで必要です。

引用:

wrdMailMerge.DataSource.FirstRecord = CLng(1)
wrdMailMerge.DataSource.LastRecord = CLng(-16)
(snip)
wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument
(snip)
wrdApp.ActiveDocument.PrintOut(Background:=False)


これらも参照を取るようにして、ReleaseComObject メソッドで参照のデクリメントをするようにしましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)