• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数起動してるエクセルを一括で保存して閉じたい)

エクセル複数起動を一括保存して閉じる方法について

このQ&Aのポイント
  • エクセル複数起動の一括保存と閉じる方法を模索しています。会社で使用しているソフトでエクセルで出力する機能を使用している際、複数のエクセルファイルが起動し、それらを一気に保存して閉じたいと思っています。現在は手動で一つずつ保存して閉じているのですが、より簡単で効率の良い方法があれば教えていただきたいです。
  • マクロやUWSCというソフトを使用して試みましたが、うまくいきませんでした。マクロでは複数のエクセルファイルを指定して閉じることができなかったため、一つずつ閉じるしかありませんでした。UWSCではマウスとキーボードの動きを記録して実行することができますが、同様にうまくいきませんでした。もし効果的な方法があれば、アドバイスをお願いします。

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

  • ベストアンサー
回答No.2

下に続くコードをテキストエディタにコピペして 拡張子はvbsで保存してダブルクリックなどで実行してみてください。 新規未保存はbook & 連番 のファイル名で保存し 既存変更有ファイルは全て上書き保存します。 複数のExcelインスタンス中のBookを順次保存し終了して行きます。 Windows7 64bit & Excel2010 32bit で 検証していますが十分でない場合があります。 もし、 >会社で使用しているソフトで右クリックメニューから >エクセルで出力するという項目があり >それを選択するとbook1、別のも出力するとbook2と >出力されていきます。 が出力のやり直しが出来ないのなら止めてください! ■責任は持てません■ 出力されるファイルの大きさによっては Wscript.Sleep (二か所あり)の数値を大きくする必要があるかも しれません。 一分ほど経っても「終了しました」のメッセージが出ない場合は 無限ループに陥っている可能性がありますので タスクマネージャのプロセスタブの中にある wscript.exe を右クリックし「プロセスの終了」してください。 それにしてもGetObjectは不思議な振る舞いをする。。。 Dim FS Dim XL, BK Dim DFname, DF, F Dim BookCount, Books(), v Set XL = CreateObject("Excel.application") DFname = XL.DefaultfilePath '既定の保存先 Set XL = Nothing Set FS = CreateObject("Scripting.FilesystemObject") Set DF = FS.getfolder(DFname) 'book & n(nは数字)のファイル名をスキャン BookCount = 0 For Each F In DF.files If StrComp(Left(FS.getbasename(F), 4), "book", vbTextCompare) = 0 Then If IsNumeric(Mid(FS.getbasename(F), 5)) Then ReDim Preserve Books(BookCount) Books(BookCount) = Mid(FS.getbasename(F), 5) BookCount = BookCount + 1 End If End If Next 'book & n のnの最大値を取得 If BookCount <> 0 Then For Each v In Books If CInt(v) > CInt(BookCount) Then BookCount = v End If Next End If Do Until saveXL(BookCount) = True Wscript.Sleep 500 Loop MsgBox "終了しました" Private Function saveXL(ByRef BookCount) Dim XL, BK On Error Resume Next Set XL = GetObject(, "Excel.Application") Select Case Err.Number Case 429 saveXL = True Exit Function Case 0 'エラーではない Case Else saveXL = True MsgBox "失敗しました" & vbCrLf & Err.Number & vbCrLf & Err.Description End Select XL.UserControl = False For Each BK In XL.workbooks If BK.Path = "" Then BookCount = BookCount + 1 BK.saveas XL.DefaultfilePath & "\book" & BookCount BK.Close Else BK.Close True End If Next Do Until XL.workbooks.Count = 0 Wscript.Sleep 200 Loop XL.Quit Set XL = Nothing saveXL = False End Function

oyn39742
質問者

お礼

ありがとうございます! 試してみたら出来ました! ループに陥った場合の対処法まで 考えていただいていて 至れりつくせりです。 本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

下記のURLのVBA「'現在作業中のブック以外の、'他に開いている全てのブックを保存して閉じる。」を参照 http://www.nurs.or.jp/~ppoy/access/excel/xlA003.html

oyn39742
質問者

お礼

ありがとうございます! いま手元にソフトがないので 後で出来るかどうか試してみます。

oyn39742
質問者

補足

職場に戻ったのでやってみましたが 閉じれませんでした・・・ ウィンドウが同じなら教えていただいた方法で 保存して閉じられたんですが エクセルが別ウィンドウで複数起動していると閉じられなかったです・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル・エラーを出さずに複数ブックをクローズしたい

    複数のファイルを閉じたいのですが、 Sub 必要ファイルを閉じる() Workbooks("あ.xls").Close SaveChanges:=False Workbooks("い.xls").Close SaveChanges:=False Workbooks("う.xls").Close SaveChanges:=False Workbooks("え.xls").Close SaveChanges:=False End Sub 開いていないファイルがあるとエラーで止まってしまいます。 この4つのファイルに該当するものがあれば、閉じる というマクロを組みたいです。 アドバイス、宜しくお願いします。

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • エクセル マクロで自動実行と終了について

    エクセルで作ったマクロを自動実行・自動保存・自動終了したいので、下記のような 記述のマクロをつくり、Windowsのタスク処理で1回/日実行させようとしています。 ----<ここから>------------------------------------ Sub Auto_Open()    :   :   Workbooks("ekuseru.xls").Close SaveChanges:=True End Sub ----<ここまで>------------------------------------ 質問その1  マクロを編集したい場合はどうすればいいのでしょう?  そのBookを開くとマクロが動き出し、保存した上で終了してしまいます。  マクロ無効でBookを開くと「ツール」⇒「マクロ」⇒「マクロ」で「編集」はクリッ  クできないようになってます。 質問その2  マクロが終了するとき、Bookは閉じますがエクセル自体は閉じません。  (意味通じますか?)  エクセル自体を閉じるにはマクロの記述はどうすればいいのでしょう? 以上、よろしくお願いします。

  • EXECLの変更を保存せずにブック強制的に閉じる方法を

    困り果てています VISTAとXPでマクロで EXECLの変更を保存せずにブック強制的に閉じる方法を 教えていただきたいのですがテストをしてみたマクロは 下記のようなものですがですがうまく動作しません シートの中にスピンボタンがありセルの中の数字を 変えると変更を保存しますか? となります。 Sub Auto_Close() ThisWorkbook.Saved = True End Sub Sub 例1434()   ActiveWorkbook.Saved = True ActiveWorkbook.Close End Sub Sub 13() ThisWorkbook.Close SaveChanges:=False End Sub Sub CloseBook() Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub Sub CloseBook2() ActiveWorkbook.Close savechanges:=False End Sub いずれもだめでした 良い方法をお教えください。

  • EXECLの変更を保存せずにブック強制的に閉じる方法を

    困り果てています VISTAとXPでマクロで EXECLの変更を保存せずにブック強制的に閉じる方法を 教えていただきたいのですがテストをしてみたマクロは 下記のようなものですがですがうまく動作しません シートの中にスピンボタンがありセルの中の数字を 変えると変更を保存しますか? となります。 Sub Auto_Close() ThisWorkbook.Saved = True End Sub Sub 例1434()   ActiveWorkbook.Saved = True ActiveWorkbook.Close End Sub Sub 13() ThisWorkbook.Close SaveChanges:=False End Sub Sub CloseBook() Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub Sub CloseBook2() ActiveWorkbook.Close savechanges:=False End Sub いずれもだめでした 良い方法をお教えください。

  • AccessでExcelのプロセスが消せない

    Access2007を使用してExcelへ出力するプログラムを作っております。 On Error時にExcelのプロセスが消せなくて困っています。 正常に終了した場合は消えているのですが、On Error時には消せないと言うのはなぜでしょう? どなたか教えてください! ロジックは以下の通りです。 Dim xls, Book, newSheet As Object Private Sub cmd02_Click() On Error GoTo Err_cmd02_Click '処理A '処理B '処理C 'ExcelFile出力 Call ExcelOut Exit_cmd02_Click: Exit Sub Err_cmd02_Click: MsgBox ERR.Description 'ExcelがOpenしているかの判断 If bolExcelFlag = True Then 'Open中だったらClose Set newSheet = Nothing Book.Close SaveChanges:=False Set Book = Nothing xls.Quit Set xls = Nothing End If Resume Exit_cmd02_Click End Sub Private Sub ExcelOut() 'Excelオブジェクト作成 Set xls = CreateObject("Excel.Application") '新しいブックを追加 Set Book = xls.Workbooks.Add '新しいシートを追加 Set newSheet = Book.Worksheets(1) 'ExcelFlagをOn bolExcelFlag = True 'ヘッダー出力 Call HeaderOut 'ExcelFile編集メイン Call MainOut '最終のSub Total編集 Call BreakOut 'フッター出力 Call FooterOut 'ファイルの保存 Book.SaveAs (strOutFileName) '各オブジェクトのClose Book.Close xls.Quit Set newSheet = Nothing Set Book = Nothing Set xls = Nothing 'ExcelFlagをOff bolExcelFlag = False End Sub 以上、よろしくお願いいたします。

  • もしも新規Excelファイルを開いてる場合は閉じる

    Excel2003です・ ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。 Option Explicit Dim ws As Workbook, flag As Boolean Private Sub Workbook_Open() For Each ws In Workbooks If ws.Name = "Book1" Then flag = True Next ws If flag = True Then Workbooks("Book1.xls").Close   Else   End IF For Each ws In Workbooks If ws.Name = "テスト用.xls" Then flag = True Next ws If flag = True Then Workbooks("テスト用.xls").Close   Else   End IF End Sub このコードだとBook1を開いているのに、Trueで拾ってくれません。 ws.Name = "Book1.xls"にしても同じです。 どこかおかしい部分があるのでしょうか?

  • 【VBA】ファイルを開く→シートをコピー→保存

    VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。

  • エクセルのマクロについて

    お世話になります。エクセル2007のマクロについてですが、「A」というBOOKがありその中の任意のセルをクリックするとハイパーリンクで「B」というBOOKが開くようになっています。 ここで「B」が開いた時点で自動的に「A」を保存しないで終了させたいのですが、マクロの組み方がわかりません。 Sub Sample1() Workbooks("BookA.xlsx").Close End Sub と記述するとBook Aが閉じるのは調べてわかったのですが、ハイパーリンクでBが開いた時点でこのマクロを動かすようにするにはどうしたらいいのでしょうか?何か別の方法があるのでしょうか? 宜しくお願いします。

  • EXCELのマクロをタスクスケジュールで実行

    WindowsXPのタスクスケジュールでEXCELのマクロを実行しています。 動くのですが一番最後にEXCELを保存して終了をしたいのですが ActiveWorkbook.close SaveChanges:=true を一行追加しても終了してくれません。どうしたらよろしいですか。

専門家に質問してみよう