- ベストアンサー
Word2000の差込印刷を繰り返し行う方法について
- VB6で計算したデータをAccess2000に入れ、Word2000の差込印刷機能を利用して出力する方法をご紹介します。
- 1回目は成功するが、2回目以降に実行するとエラーが発生する問題について解決策を提案します。
- 具体的なコードの抜粋と共に、データの書き込み、Wordファイルの開き方、差込印刷の設定、保存までの手順を説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
もう一度、全部を書き直します。 もしこれでも失敗したら, wdApp/wdDoc変数の宣言を見せてください。 Public Sub test() Dim wdApp As Word.Application 'アプリケーション変数 Dim wdDoc As Word.Document 'ドキュメント変数 Dim strFilePath1 As String '読み込むドキュメントファイルのフルパス Dim strFilePath2 As String '保存するドキュメントファイルのフルパス Dim wdfile As String 'ドキュメント名 '----- 注意 ----- 'ファイル名をプログラムの途中で作成するより、プログラム変数/定数などに最初にセットしてあると、デバッグしやすいです '開くドキュメントフルパスを取得 'strFilePath1 = Combo2.Text & Text8.Text & wdfile '保存するドキュメントフルパスを取得 'strFilePath2 = Combo2.Text & Text9.Text & "\" & Text1.Text & ".DOC" strFilePath1 = "c:\test.doc" 'テスト用のドキュメントファイル1(開く用) strFilePath2 = "c:\test2.doc" 'テスト用のドキュメントファイル2(保存用) 'デバッグ用(実践では削除してください) If vbCancel = MsgBox( _ "ドキュメントファイル1:" & strFilePath1 & vbNewLine & _ "ドキュメントファイル2:" & strFilePath2 & vbNewLine & _ "処理をします。よろしいですか?" _ , vbOKCancel Or vbQuestion, "ファイル1とファイル2の確認") Then Exit Sub End If 'ワード起動 Set wdApp = New Word.Application 'ドキュメントを開く Set wdDoc = wdApp.Documents.Open( _ FileName:=strFilePath1, _ ConfirmConversions:=True, ReadOnly:=False, _ AddToRecentFiles:=False, PasswordDocument:="", _ PasswordTemplate:="", Revert:=False, _ WritePasswordDocument:="", WritePasswordTemplate:="", _ Format:=wdOpenFormatAuto) '差込印刷 With wdDoc With .MailMerge .Destination = wdSendToNewDocument .MailAsAttachment = False .MailAddressFieldName = "" .MailSubject = "" .SuppressBlankLines = False With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With End With '現在カレントのドキュメント(差し込まれたドキュメント)を保存 wdApp.ActiveDocument.SaveAs _ FileName:=strFilePath2, _ FileFormat:=wdFormatDocument, LockComments:=False, _ Password:="", AddToRecentFiles:=True, _ WritePassword:="", ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _ SaveFormsData:=False, SaveAsAOCELetter:=False '全てのドキュメントを閉じる For Each wdDoc In wdApp.Documents wdDoc.Close SaveChanges:=False Next wdDoc 'ワード終了 wdApp.Quit '変数開放 Set wdDoc = Nothing Set wdApp = Nothing MsgBox "終了" End Sub
その他の回答 (2)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
すいません... For Each wdDoc In wdApp.Documents wdDoc.Saved = True wdDoc.Close Next wdDoc なのですが、 Set wdDoc = wdApp.Documents としているところを見ると Word.Documents として宣言してるのですね。 たぶん現状ではエラーが起こるかも? なので、ドキュメンツではなくドキュメント変数を1つ用意してください。 Dim wdDoc2 As Word.Documents ← NG Dim wdDoc2 As Word.Document ← OK それで For Each wdDoc2 In wdApp.Documents wdDoc2.Saved = True wdDoc2.Close Next wdDoc としてください。
補足
いつもすいません。上手く行きませんでした。 省略したファイルを開く場合と保存する場合ですが下に書いてある文で行っております。 【ファイルを開く】 Set wdApp = New Word.Application Set wdDoc = wdApp.Documents wdDoc.Open FileName:=Combo2.Text & Text8.Text & wdfile, ConfirmConversions:=True, ReadOnly:= _ False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _ "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _ Format:=wdOpenFormatAuto 【差込印刷】 Set wdApp = New Word.Application ↓ ActiveWindow.Close (前述した内容です。) 【ファイル保存】 ChangeFileOpenDirectory Combo2.Text & Text9.Text '番号を付けて保存 ActiveDocument.SaveAs FileName:=Text1.Text & ".DOC", FileFormat:=wdFormatDocument, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False wdDoc.Close 'Wordを終了させます。 ---以下前述したとおりです。 よろしくお願いいたします。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
全体的なプログラムを見てみないと、正確なことは言えないのですが・・・・ 差込印刷を行うと、ドキュメントを閉じるだけでは、完全にはドキュメントを開放されないようです。 なので・・・ >wdDoc.Close 'Wordを終了させます。 >wdApp.Quit としている部分を For Each wdDoc In wdApp.Documents wdDoc.Saved = True wdDoc.Close Next wdDoc wdApp.Quit と変更してみて下さい。
お礼
ありがとうございました。 毎回、丁寧に教えていただいて申し訳ございません。 非常に助かりました。