• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Word2000の差込印刷を繰り返し行う方法について)

Word2000の差込印刷を繰り返し行う方法について

このQ&Aのポイント
  • VB6で計算したデータをAccess2000に入れ、Word2000の差込印刷機能を利用して出力する方法をご紹介します。
  • 1回目は成功するが、2回目以降に実行するとエラーが発生する問題について解決策を提案します。
  • 具体的なコードの抜粋と共に、データの書き込み、Wordファイルの開き方、差込印刷の設定、保存までの手順を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.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

tazataka
質問者

お礼

ありがとうございました。 毎回、丁寧に教えていただいて申し訳ございません。 非常に助かりました。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

すいません... 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 としてください。

tazataka
質問者

補足

いつもすいません。上手く行きませんでした。 省略したファイルを開く場合と保存する場合ですが下に書いてある文で行っております。 【ファイルを開く】 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)
回答No.1

全体的なプログラムを見てみないと、正確なことは言えないのですが・・・・ 差込印刷を行うと、ドキュメントを閉じるだけでは、完全にはドキュメントを開放されないようです。 なので・・・ >wdDoc.Close 'Wordを終了させます。 >wdApp.Quit としている部分を For Each wdDoc In wdApp.Documents   wdDoc.Saved = True   wdDoc.Close Next wdDoc wdApp.Quit と変更してみて下さい。

関連するQ&A