VBAで上書きせずにExcelの表に対応するWordファイルをプリントアウト後に閉じる方法は?

このQ&Aのポイント
  • Excelの表に対応するWordのファイルをプリントアウトして閉じる際に、上書きせずにそのまま閉じる方法を教えてください。マクロを作成した人に連絡が取れないため、どの行が何をしているのかわかりません。
  • マクロの一部である「WordObj.ActiveDocument.PrintOut」、「WordObj.ActiveDocument.Close」、「WordObj.Application.ActivePrinter = currentPrinter」、「WordObj.Quit」、「Set WordObj = Nothing」の部分が関連していると思われます。
  • 上記の各行の役割を理解せずに、上書きせずにWordファイルを閉じる方法を教えてください。
回答を見る
  • ベストアンサー

VBAで上書きしないには

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

  • dogs59
  • お礼率77% (279/359)

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

WordObj.ActiveDocument.Close ↓ WordObj.ActiveDocument.Close SaveChanges:=False と変更。

dogs59
質問者

お礼

ありがとうございました。

関連するQ&A

  • EXCEL VBAでプリンタの設定方法について

    EXCEL VBAのプリンタの設定方法について質問があります。 Dim oApp As Object Dim WFM As Strin WFM = "\\Cl111\フォルダ\ファイル\" &Range("C3").Value & ".doc" Set oApp = CreateObject("Word.Application")  ’ワード起動 oApp.Visible = True oApp.Documents.Open WFM  ’文書を開く Application.ActivePrinter = "AAA on Ne00:"  ’プリンタ設定 oApp.activedocument.PrintOut Copies:=1, Background:=False  ’印刷 oApp.Quit SaveChanges:=False  ’ワード終了 Set oApp = Nothing このようなコードで、(1)ワードを開き、(2)プリンタを設定し、(3)印刷をする、という作業をしたいのですが、 Application.ActivePrinter = "AAA on Ne00:" ではプリンタの設定が変わらず、通常使うプリンターで印刷がされてしまいます。 ワードを開いて印刷することで何か特殊なコードが必要なのではないかと思うのですが、調べても該当するものが出てきませんでした。 どうぞよろしくお願いいたします。

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

  • 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

  • Excel VBAのPrintOutメソッドにつきまして

    毎々お世話になります。 ExcelのVBAにてシート編集→印刷を実施しておりますが、印刷が行えない事象が発生しております。(100%ではありません。) ----------------------------------------------- ExlObj.ActiveSheet.PrintOut '印刷開始 ExlObj.DisplayAlerts = False ExlObj.Quit 'Excelの終了 Set ExlObj = Nothing ------------------------------ シート内のレコードが多く大量の枚数を印刷する場合、PrintOutメソッドから次の処理(Quit→オブジェクト破棄)を行ってますが、PrintOutから次の処理に移った後にExcelオブジェクトが残ることはないでしょうか? また、ActiveSheetのCloseは必ずQuit前に実施する必要はありますでしょうか?

  • VBSでExcelファイル印刷時のプリンタ指定

    VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。 印刷時のソースは下記のとおりです。 Set Excel = CreateObject("Excel.Application") Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False) Excel.ActiveWindow.SelectedSheets.PrintOut() Excel.DisplayAlerts = False Excel.quit() objWkBk.close Set objWkBk = Nothing Set Excel = Nothing 上記コーディングに下記(1)~(4)を追加または、修正して試してみましたが、エラーとなってしまいます。 (1)Application.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2" (2)Excel.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2" (3)Excel.ActiveWindow.SelectedSheets.PrintOut("\\NAS0013W\Kyocera LS-6700SKX2") (4)Excel.ActiveWindow.SelectedSheets.PrintOut(ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2") そもそも、vbsからはプリンタの指定はできないのでしょうか? ご教授いただきたく、よろしくお願いいたします。

  • VBAでプリンタを変えたい。

    こんにちは。 WindowsXPでOffice2003を使用しています。 ちょっと困っているので、わかる方は知恵をお貸しください。 EXCEL VBAを使用し、プリントアウト等色々使っています。 当初は、印刷の時 「Application.ActivePrinter = "(プリンタ名) on NeXX:"」 としていたのですが、不都合があり「Printout」メソッドを 使うようにしました。 問題は、ここからです。 このあと、ポート名(on NeXX:)を使わずに、通常使うプリンタ に戻す(印刷はしたくない)には、どのようにすれば良いのでしょうか。 わかりづらい質問で申し訳ございませんが、 よろしくお願いいたします。

  • 【Excel VBA】マクロでExcel自体を終了させたい

    環境:WindowsXP、Excel2003 マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。 ThisWorkbook.Close ExcObj.Quit Application.Quit どこか悪いところはありますでしょうか? よろしくお願いします。

  • 印刷ダイアログを表示させたくない

    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 ダイアログを制御するプロパティは存在しないのでしょうか? ご指導のほどよろしくお願い致します。

  • エクセルのマクロでのプリンタ自動切替について

    エクセルのマクロ初心者ですが、ご教示いただければ幸いです。 業務で日々使用する様式をボタン一つで印刷できるよう、マクロを作成中です。 エクセルのファイルは共有ファイルサーバーに保存していて、各端末(例:WS0001、WS0002、WS0003…)から印刷したいと考えています。 各端末の「通常使うプリンタ」はPR0001なのですが、この様式はWS0001のUSBポートに繋がったPR0002から出力する必要があります。 WS0001とWS0002他から見た場合にプリンタのパスが異なるため、現状では ActiveSheet.PrintOut ActivePrinter:="pr0002" ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002" と2つのマクロを別々のボタンに割り当てていますが、ボタンを押し間違えることがあり、何とか1つのマクロにできないかと考えています。 例えば「"pr0002"が無い場合は"\\Ws0001\pr0002"から出力しなさい」といような記述は可能でしょうか? On Error でできるのかと考え、 On Error GoTo 0 ActiveSheet.PrintOut ActivePrinter:="pr0002" On Error GoTo 0 ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002" あるいは On Error GoTo 0 ActiveSheet.PrintOut ActivePrinter:="pr0002" ActiveSheet.PrintOut ActivePrinter:="\\Ws0001\pr0002" と記述してみましたが、何故かPR0001とPR0002と2枚出力されて、上手くいきません。 ネットワーク上のプリンタ出力先の記述は、 Application.ActivePrinter = "\\Ws0001\pr0002 on NeXX:" ExecuteExcel4Macro _ "PRINT(1,,,1,,,,,,,,2,"""\\Ws0001\pr0002 on NeXX:"",,TRUE,,FALSE)" と記述した方が確実なようですが、端末によってXXの数字が異なるようで、エラーになることがあります。 何卒よろしくお願いいたします。

  • ワード VBA

    ワードのマクロについて教えてください。 以下のようなマクロをボタンに登録しています。 Sub Macro10() Dim myReg As Object Dim st As String Dim match As Variant Set myReg = CreateObject("VBScript.Regexp") myReg.Pattern = "\x0d\x0d(|$)" myReg.Global = True st = ActiveDocument.Range.Text ActiveDocument.Range(1, 1).Select For Each match In myReg.Execute(st) With Selection .Find.Text = match.Value .Find.Replacement.Text = vbCr .Find.Execute , , , , , , , , , , wdReplaceAll End With Next st = ActiveDocument.Range.Text If myReg.Test(st) Then _ ActiveDocument.Range.Text = myReg.Replace(st, "") Set myReg = Nothing End Sub ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

専門家に質問してみよう