Access2010でWORD差込VBA実行後終了

このQ&Aのポイント
  • Access2010でWORDの差込を実行するVBAを組み、成功したが、保存時に問題が発生
  • 必ず「未保存の文書1を保存しますか?」とWORDが聞いてくる問題に対処する方法を知りたい
  • 問題の解決方法についてアドバイスをいただきたい
回答を見る
  • ベストアンサー

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

  • oraho
  • お礼率69% (118/169)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

段々と怪しさ度が増してきているような気がしますけど(気のせい?) もしかしたら、終了時の問題では無くてその前の処理で Word のオブジェクトの扱い方に問題があるのかもしれません。 >WordApp.Application.ActiveDocument.SaveAs FileName:=WName, FileFormat:=1 のあたりで、F9 で一旦止めてからタスクマネージャでプロセスを見た時に WinWord.exe が複数立ち上がっていませんか? Wordの解説が見つからなかったので、Excel でのお話ですが http://homepage1.nifty.com/rucio/main/technique/teq_15.htm Wordに読み替えてみてください。 もしも、WinWordが複数立ち上がっていたのなら どこかで扱い方を間違えているのでしょうから コードの最初の方(・・・Createobject("Word.Application"・・とかかな?)の 辺りで F9 でブレークポイントを設定し、ステップ実行しつつ タスクマネージャで新たなWinWord.EXE が立ち上がってこないか確認してみては? 最初は一個しかないものが二個になった時の処理行が問題だということになります。 かなり妄想で回答していますので全く役立たずかも、ご参考までに。 それとももしかして、これも関係してくる? Word を終了するたびに全文書対象のテンプレート Normal.dot または Normal.dotm への変更を保存するかどうかを確認するメッセージが表示される http://support.microsoft.com/kb/291352/ja あまり惑わすような珍怪答をしてはマズイので、私はこの辺で消えます。ごめんなさいね。

oraho
質問者

お礼

おかげさまで解決しました! COM Add-Inの一部が引き起こしていたようです 丁寧に教えていただき、感謝しております

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

前回は拙い回答ですみませんでした。 今回のもかなり怪しいのですが・・ 文書1 ということは新規のドキュメントの暫定的な名前ですよね。 それとも、文書1というファイルに対して変更を加え、別名保存しているのでしょうか? コードを全て提示してもらわないと回答は難しいかと思います。 (私には分からないかも知れません) とりあえず、『臭いものに蓋』式の良くない対処法 WordApp.Quit を WordApp.Quit Savechanges:=false なら閉じること自体は出来そう?です。

oraho
質問者

補足

先般来、いろいろとご教示いただきありがとうございます おかげさまで、WordApp.Quit Savechanges:=falseにしたところ、メッセージはでなくなり無事解決しました。 ところが、一難去ってまた一難で、文書は正常に別ファイル名で保存でき、WORDも無事終了したにもかかわらず、[WORDはこの文書を保存できませんでした。別の箇所で使用されています]というメッセージが出ます。英語版OFFICE2010を使用していますので正確には[Word cannot save this file because it is already open elsewhere. (c:\users\...\Templates\normal.dotm]という表示です。この表示をなくす方法がありましたら、教えていただけませんでしょうか? 保存の箇所は下記のとおり記載しています '文書を保存する。 WName = ”AAA" & Me.sashikomi & ".doc" WordApp.Application.ActiveDocument.SaveAs FileName:=WName, FileFormat:=1 'Wordを終了する。 WordApp.Application.ActiveDocument.Close WordApp.Quit Savechanges:=False Set WordApp = Nothing Set doc = Nothing

関連するQ&A

  • エクセル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 よろしくお願いいたします。

  • 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 長々と書いて申し訳ございませんが、よろしくお願いいたします。

  • EXCEL/VBA:WORDファイルの上書き保存を確認する方法

    以下のvbaを実行すると、次のように動作します。   test1.xlsを開いて、Atest1.xlsの名前で保存するときに、既にファイルが存在する場合、excelでは上書き保存するか聞いてきます。  しかし、test1.docを開いて、Atest1.docの名前で保存するときは、いきなり上書き保存されます。 wordの場合も上書き保存するか聞くようにするには、どうしたら良いか教えてください。 Workbooks.OpenText Filename:="test1.xls" ActiveWorkbook.SaveAs Filename:="Atest1.xls" ActiveWindow.Close Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application wordApp.Visible = True Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\test1.doc") Set wordRange = wordDoc.Content wordDoc.SaveAs Filename:="Atest1.doc" wordDoc.Close wordApp.Quit

  • AccessVBAからWordのマクロを実行するには

    [環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub

  • 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

  • excel VBAを利用し、テンプレートとなるワードファイルの一部分を

    excel VBAを利用し、テンプレートとなるワードファイルの一部分をエクセルデータで 置換を行い、新しいワードファイルとして保存するという処理を作成しています。 [環境] Windows Vista Office 2007 差し込み文書ではなく個別にファイルを作りたいという条件があります。 処理としては、 テンプレートを開く→置換を実施→別名で保存→テンプレートを変更せず閉じる を繰り返し実施しています。 ただ、このやり方ですと最後の閉じる処理を行った際に、 「wordは、動作を停止しました」というエラーメッセージが頻繁に出てしまいます。 出来上がったファイル自体は問題なく読めているんですが。 処理自体に問題があるんでしょうか? VBA自体初心者であり、他に良い方法などありましたらご教示いただけたら助かります。 #処理内容はだいぶ簡略化しています。 Public Function output_word2()   Dim word        As New word.Application   Dim document      As word.document   Dim file_name      As String   Dim output       As String   Dim path        As String   Dim row        As Integer      Sheets(CALC_SHEET).Select 'データ取得用シート   path = Application.ActiveWorkbook.path   file_name = path & "\xxxxxx.doc"          '元の文書   row = 3   Do     If Range("B" & row).Value = "" Then       Exit Do     End If          With word       .Documents.Open Filename:=file_name       Set document = .ActiveDocument     End With          word.Selection.Find.Text = "{置換対象文字}"     word.Selection.Find.Forward = True     word.Selection.Find.Replacement.Text = Range("C" & row).Value     word.Selection.Find.Execute , , , , , , , , , , wdReplaceAll          output = path & "\output\" & Range("C" & row).Value  & ".doc"          document.SaveAs Filename:=output   '置換後のword文書を別名で保存     document.Close SaveChanges:=False     word.Quit     row = row + 1     Set word = Nothing     Set document = Nothing   Loop End Function

  • Excelマクロで、WORDを閉じるには。

    Excel2000のマクロ内で、Word2000を起動してファイルを開き、それを別名保存した後Wordを閉じてExcelに戻る…という処理を行いたいのですが、Wordを閉じる所がうまく出来ません。 [現在のマクロ]------------------------------ Set wd = CreateObject("word.Application") wd.Visible = True wd.documents.Open Filename:= _ "C:\aaa.doc" wd.ActiveDocument.SaveAs Filename:= _ "C:\test\bbb.doc" wd.Close SaveChanges:=False -------------------------------------------- これで実行すると、開いたファイル(aaa.doc)は閉じるのですが、別名保存したファイル(bbb.doc)が閉じません。両方のファイルおよびWORDアプリケーションを閉じたければどう記述すればよいのでしょうか? どなたか教えてください。

  • 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 -------------------------------------------------------

  • word VBA ファイル名 保存

    wordで作成したファイルの最初の第1行名をファイル名として、名前を付けて保存できるマクロを作りたいのですが、うまくいきません。 Sub 保存() Dim ファイル名 As Variant ファイル名 = ActiveDocument.Paragraphs(1) & ".docx" ActiveDocument.SaveAs FileName:=(ファイル名), FileFormat:= _ wdFormatXMLDocument End Sub ではだめなのですが、どなたか添削よろしくお願いします。困っております。なにぶん初心者ですので基本的な文法のミスかもしれないですが、うまくいきません。

  • VBAで上書きしないには

     Excelの表に対応するWordのファイルを呼び出して、プリントアウトして閉じるということをしているのですが、プリントアウトのあとのタイムスタンプが、更新されているようです。  更新せず(上書きせずに)にそのまま閉じるにはどうしたら良いのでしょうか?  ちなみに、マクロは私が作ったものではないので、どの行が何をしているのか?よくわからないもので。(作者はすでに退職しており、連絡が取れません)  この部分だと思うのですが。 WordObj.ActiveDocument.PrintOut WordObj.ActiveDocument.Close WordObj.Application.ActivePrinter = currentPrinter WordObj.Quit Set WordObj = Nothing

専門家に質問してみよう