tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VB2005でワード差込印刷
投稿日: 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に関しては全てコメントにしました。

何が悪いのかも良くわからない状況です。
至らない点は随時補足いたしますのでよろしくお願いいたします。









              

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。