Word2000の差込印刷を繰り返し行う方法について
- VB6で計算したデータをAccess2000に入れ、Word2000の差込印刷機能を利用して出力する方法をご紹介します。
- 1回目は成功するが、2回目以降に実行するとエラーが発生する問題について解決策を提案します。
- 具体的なコードの抜粋と共に、データの書き込み、Wordファイルの開き方、差込印刷の設定、保存までの手順を説明します。
- ベストアンサー
Word2000の差込印刷を繰り返し行う方法について
VB6で計算したデータをAccess2000に入れ、そのデータをWord2000の差込印刷機能を利用して出力したいのですが、1回目は上手くいくのですが続けて2回目を実行すると実行時エラー’462’【リモートサーバーがないか、使用できる状態ではありません。】と表示されます。 With ActiveDocument.MailMerge '差込印刷の行でエラーが表示されます。 コードの抜粋は以下の通りです。 ---ここまででデータを書き込みます。--- Set wdApp = New Word.Application Set wdDoc = wdApp.Documents wdDoc.Open FileName~---ここでWordファイルを開きます。--- With ActiveDocument.MailMerge '差込印刷 .Destination = wdSendToNewDocument .MailAsAttachment = False .MailAddressFieldName = "" .MailSubject = "" .SuppressBlankLines = False With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With Windows(wdfile).Activate ActiveWindow.Close ~SaveAs FileName~'番号を付けて保存を行います。 wdDoc.Close 'Wordを終了させます。 wdApp.Quit Set wdApp = Nothing Set wdDoc = Nothing 長々と書いて申し訳ございませんが、よろしくお願いいたします。
- tazataka
- お礼率38% (8/21)
- Visual Basic
- 回答数3
- ありがとう数1
- みんなの回答 (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 と変更してみて下さい。
関連するQ&A
- AccessVBAから差し込みWORD起動について
AccessVBAで下記のようなコードを記述して 差し込み文書のWORDファイルのデータを更新して、別名保存・終了をしています。 [ Set objOrg = GetObject(strOrgNm)]の部分でWORD起動する際、 「この文書を開くと、次のSQLコマンドが実行されます。」というメッセージが表示されます。 複数のファイルについて処理するため、このメッセージを表示しないようにさせたいのですが 良い方法がありますでしょうか。 --<コード>-------------------------------------------- Dim strOrgNm As String ' 差し込み文書元ファイル名 Dim objOrg As Object Dim objTemp As Object Set objOrg = GetObject(strOrgNm) Set objTemp = GetObject(Class:="Word.Application") With objOrg With .MailMerge .Destination = 0 .SuppressBlankLines = True With .DataSource .FirstRecord = 0 .LastRecord = DCount("*", "テスト用クエリ") End With .Execute Pause:=False End With objTemp.Application.ActiveDocument.SaveAs FileName:=pstrOrgNm & "_test" objTemp.Application.ActiveDocument.Close End With -------------------------------------------------------
- 締切済み
- Visual Basic
- Access2010でWORD差込VBA実行後終了
Access2010でWORDのブックマークへの差込を実行するVBAを組み、うまく作動しました ところが、「WORDで特定文書の名前で保存する構文をいれ、別名保存がうまく終わっている」にも拘わらず、必ず”未保存の文書1を保存しますか?”とWORDが必ず聞いてきます。これを回避するにはどのようにしたらよろしいでしょうか? ACCESS2010のVBAは下記のとおり組んでいます 'Word文書を保存する箇所 WordApp.Application.ActiveDocument.SaveAs FileName:=VARIABLE.doc, FileFormat:=1 'Wordを終了する箇所(上記保存のすぐ後に書いています) WordApp.Application.ActiveDocument.Close WordApp.Quit Set WordApp = Nothing Set doc = Nothing
- ベストアンサー
- その他MS Office製品
- WORDのVBAで印刷プレビューの制御方法
excelからVBAでWORDを起動させ、エクセルデータをWORDの宛て名ファイルに差込み、印刷プレビューまでさせています。 EXCELでは、印刷プレビューの次の行のコマンドはプレビューを閉じないと実行されませんが、WORDでは実行されてしまいます。 今やりたいのは、WORDの宛名ファイルを印刷したあと、WORD自体は保存しないで終了し、EXCELだけ起動した状態にするということです。 ActiveDocument.PrintPreview ActiveDocument.Close = False と記述しただけでは、印刷できないまま、WORDが終了してしまいます。 何かよい方法があるでしょうか?
- 締切済み
- オフィス系ソフト
- 印刷ダイアログを表示させたくない
VB6.0でWORDファイルを印刷する機能を作成しています。 ボタンを押して指定のファイルを印刷する際、 完全にバックグラウンドで印刷したいのですが、 どうしても「印刷中」のダイアログが出てしまいます。 ソースは以下のとおりです。 Dim wd As Word.Application Set wd = CreateObject("Word.Application") wd.Visible = False wd.Documents.Open FileName:="D:\sample.doc", ReadOnly:=True wd.Options.PrintBackground = False wd.ActiveDocument.PrintOut wd.ActiveDocument.Close wd.Quit Set wd = Nothing ダイアログを制御するプロパティは存在しないのでしょうか? ご指導のほどよろしくお願い致します。
- 締切済み
- Visual Basic
- AccessからWordの差し込み印刷文書を印刷するVBAについて教えてください
Access初心者です。 使用バージョンは、Access・Wordともに2007です。 Accessのクエリー/テーブルをWord文書に差し込み、Accessから起動してその差し込み文書を印刷したいのですが、うまくいきません。 Getobjectを使ってWordの差し込み文書テストを印刷する以下のようなプロシジャを作成しました。 予め、手動でWordを起動してから、このプロシジャを実行すると、文書『テスト』を開く前に「次の文書を開くと次のコマンドが実行されます。Select*fromテーブル名 データベースのデータが文書に挿入されます続行しますか?」のメッセージが表示されて応答確認が来るのですが、Wordを起動せずに実行すると、上記のメッセージは表示されず、テーブル内のデータに更新がかかっているにもかかわらず、上記メッセージで「いいえ」と応答したのと同様の状態で印刷されます。 はたして、こんなプロシジャでよいのか、使用方法が間違っているのかすら見当がつきません。どなたかアドバイスをお願いいたします。 (作成したプロシジャ) On Error GoTo エラー発生 Dim WordFilePass As String WordFilePass = "C:\Users\User1\Documents\テスト.docx" Dim MyWord As Word.Application Set MyWord = GetObject(, "Word.Application") MyWord.Visible = True MyWord.Documents.Open FileName:=WordFilePass MyWord.ActiveDocument.PrintOut MyWord.Application.Quit Set MyWord = Nothing エラー発生: If Err.Number = 429 Then Set MyWord = CreateObject("Word.Application") Resume Next Else MsgBox "エラーNo : " & Err.Number & vbNewLine & vbNewLine & _ "エラー内容 : " & Err.Description End If
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでワード文書印刷(2)
先日、こちらで、VBAを記述したエクセルのブックと同一フォルダーにおいておいたABC.DOCをプリントし、ABC.DOCを閉じる方法を教えていただき、Excel2003でためしたら、下記でうまくいきました。(その際、回答者のchie65536さん、手が滑ってポイントをつけず締め切ってしまいました、申し訳ございません。) ところが今、会社のExcel2000でやったところ、「印刷中です。Wordを終了すると印刷待ちのすべてのジョブがキャンセルされます。」と出てしまいます。 ABC.DOCをプリントしおわったら、ABC.DOCを閉じ、ワードを終了するようにしたいのです。 ためしに、wd.Quitの代わりに、wd.ActiveDocument.Close とすれば印刷はされましたが、ワードが終了しません。 wd.ActiveDocument.Close のあとに wd.Quitを入れると、「印刷中です。Wordを終了すると・・・・」が出てしまいます。 どうなおせばよいのでしょうか? Sub Word_Print() Dim wd As Object Set wd = CreateObject("Word.application") wd.Visible = True wd.documents.Open Filename:=ThisWorkbook.Path & "\ABC.doc" wd.ActiveDocument.PrintOut wd.Quit Set wd = Nothing End Sub よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- word97差込印刷について
word97で作成した、差し込みメイン文書にエクセルで作成したデータを差込印刷するときに。 実行すると、1つのフィールドごとに改ページされてしまい、1枚の紙に、単票の連続印刷ができません。どのようにすればよいのでしょうか? ちなみに、1枚に1つのフィールドは差し込むことができています。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- ワード2002での差し込み印刷
今までワード2000のツールの差し込み印刷ヘルパーでうまく行っていた差し込み印刷が、ワード2002に変えたら、ツールが差し込み印刷ウィザードに変わっていて、全くできず、ヘルプを見てもわからなくて困っています。 ワード2000でカタログと言っていたものは2002では何にあたるのでしょうか。 エクセルの全員分のデータから、ワードで個人データの表を作りたいのです。
- 締切済み
- Windows XP
- エクセルマクロでワード文書を強制的に閉じるには
エクセルマクロでワードへの差し込み印刷を行っています。 時々、ワード様式ファイルを二重起動してしまい、その結果読み取り専用で開くかとのメッセージで出て処理がストップすることがあります。 そこで 差し込み印刷を行う前に、ワード様式ファイルが開いているかどうか確認し、開いていれば一旦ワード様式ファイルを閉じてから、差込印刷を開始するように改良しました。 ところが、今度は、ワード様式ファイルを閉じる段階で 「〇〇.docに対する変更を保存しますか? 保存 保存しない キャンセル」のメッセージが表示され、処理がストップしてしまいます。 メッセージが出ない方法について数日、いろいろ試みましたがいまだできません。どなたかご教示のほどよろしくお願いいたします。 ★印の箇所が最後に試みたcordです。 =============================== Option Explicit Dim myxls, mydoc As String '---------------------- Sub 差込印刷() '---------------------- myxls = ThisWorkbook.Path & "\VBA差込元data.xls" mydoc = ThisWorkbook.Path & "\差込先ワード様式.doc" '↓Word差込印刷時の二重起動による休止を避けるためのcode On Error GoTo ErrorHandler '↓差込先ワード様式.docが既に開いていると次行でerror75が発生、ErrorHandlerに飛んで注意を促す。 Name mydoc As mydoc '-------- Word差込 '-------- Exit Sub ErrorHandler: '↓★ここで差込先ワード様式.docを「保存」「保存しない」「キャンセル」の確認ウィンドウが表示されてしまう。★ Let Application.DisplayAlerts = False '★←これを書いても無駄だった★ GetObject(mydoc).Application.Quit Let Application.DisplayAlerts = True '★ Resume End Sub '----------------- Sub Word差込() '----------------- Dim objword, wddoc As Object Set objword = CreateObject("Word.Application") '←Wordオブジェクトを作成 With objword .Visible = True '↓Wordドキュメントオブジェクトを作成→指定ワード文書が読み込まれた。 Set wddoc = .Documents.Open(Filename:=mydoc) End With '---------------------------------- With wddoc.MailMerge '↓フルパスでよろしくね! .MainDocumentType = wdFormLetters .OpenDataSource Name:=myxls, _ Connection:= _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ myxls & ";Mode=Read;Jet OLEDB:Engine Type=35" _ , SQLSTATEMENT:="SELECT * FROM [sheet1$]" '----------------------- Dim rc As Integer rc = MsgBox("人数分のワードのページを作成しますか?" & vbCr & _ "【は い】・・人数分のページを作ります。" & vbCr & _ "【いいえ】・・ページをつくりません。(Word様式原本のみ作成)", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '----------------------- '下記3行により[個々の文書の編集]まで一気に .ViewMailMergeFieldCodes = False .Destination = wdSendToNewDocument .Execute '----------------------- wddoc.Close '←word原本・Wordドキュメントオブジェクトを閉じる。 Set objword = Nothing Set wddoc = Nothing End If '----------------------- End With '---------------------------------- End Sub
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございました。 毎回、丁寧に教えていただいて申し訳ございません。 非常に助かりました。