• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:開いているブックをバックアップ後閉じる方法)

開いているブックをバックアップ後閉じる方法

Noubleの回答

  • ベストアンサー
  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

ファイル名を、取得して クローズする事は、 試されましたか? http://officetanaka.net/excel/vba/file/file03.htm

shibushijuko
質問者

お礼

ご回答ありがとうございます。ご指摘いただいたサイトを見て下記内容を追加しました。 ActiveWorkbook.Close これで保存されたブックは閉じますが、Excel自体が閉じないので、以下のVBAを作成して、希望通りになりました。 Sub バックアップ() Dim rc As Integer rc = MsgBox("バックアップを続行しますか?", vbYesNo + vbQuestion, "バックアップ") If rc = vbYes Then MsgBox "バックアップ完了しました。全てのウインドウが閉じられます。" Application.DisplayAlerts = False ActiveWorkbook.SaveAs "C:\excel\" & Format(Date, "yyyymmdd") & ".xlsm" Application.DisplayAlerts = True ActiveWorkbook.Saved = True Application.Quit ActiveWorkbook.Close Else MsgBox "処理は中断されました" End If Application.Quit ThisWorkbook.Close End Sub

関連するQ&A

  • 他ブックを実行するマクロ

    あるexcelファイル(ブック名「自動操作.xlsm」)からべつのexcelファイル(ブック名「a.xlsm」)というファイルを実行するマクロを組んでいます。 Application.Runを用いて「自動操作.xlsm」のコードを以下のように記述しました。 ※「\」は半角の円マークだと考えてくれればいいです。ここで半角の円マークをかいても\と表示されます。また、自動操作とaは同じディレクトリにあります。 Sub Test1() Application.Run "'C:Users\ディレクトリ名\a.xlsm'!test" End Sub また、「a.xlsm」は以下のように記述しました。 Sub test() Dim i As Integer For i = 1 To 5 '移動元ファイルパスの設定 Cells(i, 1) = i Next End Sub ただ1~5行にその行数を記入するマクロです。 a.xlsmを開いた状態でこれを実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 a.xlsmを閉じた状態で実行すると、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」とでます。 いったいなにを間違えているのでしょうか。

  • 他のブックに現在のデータを日付をつけて保存したい

    WinXP Excel2003でマクロを作っている超初心者です。90%完成しましたが、次のことで止まっています。 1)Aブックのユーザーホームに、BコマンドボタンとCコマンドボタンがあります。    Aブック→Bコマンドボタン→Bブック開く→入力→Aブックのコマンドボタンで保存        →Cコマンドボタン→Cブック開く→入力→Aブックのコマンドボタンで保存 2)Aブックのコマンドボタンからではなく、エクセルを起動し、Bブックを開き、「今日の日付をつけて新規ブックに保存」のマクロを作りました。 コードは次のとおりでした。 Sub ブック名に現在の日付を付加して保存GH() 'Windows環境なのでEnviron関数を使ってみる Dim strFileName As String Dim strSavePath As String Dim intRe As Integer Application.DisplayAlerts = False ActiveWorkbook.Save strSavePath = Environ("HOMEPATH") strSavePath = strSavePath & "\デスクトップ\総務\請求\データ保存用" If Dir(strSavePath, vbDirectory) = "" Then MkDir (strSavePath) End If strFileName = strSavePath & "\GH請求" & Format(Date, "yyyymmdd") & ".xls" If Dir(strFileName) <> "" Then MsgBox "このGH請求書を保存し、同時に「データ保存用」の中にも保存しました。。" Else ThisWorkbook.SaveAs Filename:=strFileName End If If intRe = vbNo Then Exit Sub If intRe = vbYes Then ActiveWorkbook.SaveAs Filename:=strFileName End If Application.DisplayAlerts = True Application.Quit End Sub  無事に今日の日付でBブックが保存できました。 3)今度は、Aブックから、→Bコマンドボタン→Bブック開く→Aブックのコマンドボタンで「今日の日付をつけて新規ブックに保存」のマクロを実行しました。すると、保存先にはAブックが保存されていました。AブックでなくBブックのデータを保存したいのに・・・。 4)なぜ、Bブックが保存されないのでしょうか? Bブックを保存するにはどうしたらよろしいでしょうか。

  • エクセルのブックを閉じるマクロについて

    エクセルのブックAとブックBが開いている状態で、 ブックAのボタンに登録して実行すると、ブックAのみ閉じる、 というマクロを作りました。(下部にコードを記載します) このマクロは、2つのブックが開いていると正常に稼働するのですが、 ブックが1つしかない場合、実行時エラーが出てしまいます。 (ブックAのみ開いた状態でこのボタンを押してもエラーなく閉じたい) 実行時エラーが出ないようにするにはどうすれば良いか、 おわかりの方がいらっしゃいましたら教えて下さい。 どうぞよろしくお願い致します。 Sub このブックのみ閉じる() Dim wa As String wa = "ほかに無い" Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wa = "ほかにあるよ" End If Next If wa = "ほかに無い" Then Application.DisplayAlerts = False Application.Quit '終了予定 End If Range("D2").Select Selection.ClearContents ThisWorkbook.Close SaveChanges:=False End Sub

  • 個人用マクロブックの有無

    エクセルVBAで現在ユーザーが使っているパソコンに個人用マクロブックが存在するかどうかを取得する方法を考えました。 まず、開いているBOOKを総当りして、エクセル2003までなら PERSONAL.XLS、2007からは"PERSONAL.XLSM がひらいているかどうかを調べる方法。 Sub test1() Dim wb As Workbook For Each wb In Workbooks If wb.Name Like "PERSONAL.XLS*" Then MsgBox "個人用マクロブックがあります。" Exit Sub End If Next MsgBox "個人用マクロブックはありません。" End Sub 最初から個人用マクロブックがあるものとして変数に入れ、エラーになったら無いと判断する方法。 Sub test2() Dim wb As Workbook Dim v As String v = IIf(Val(Application.Version) > 11, "PERSONAL.XLSM", "PERSONAL.XLS") On Error Resume Next Set wb = Workbooks(v) On Error GoTo 0 MsgBox "個人用マクロブックが" & IIf(wb Is Nothing, "ありません。", "あります。") End Sub でも、自分の端末はまだ2000で、しかも個人用マクロブックがあるので、ちゃんと判定できているのかどうか自信がありません。 これで正しいのでしょうか? また、test1とtest2ではどちらをつかえばいいのでしょうか? あるいは、もっと簡単なやりかたはないのでしょうか?

  • 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 いずれもだめでした 良い方法をお教えください。

  • ブックの集計方法について

    複数ファイルにある特定のシートのA列に記載がある時だけ、その行のA列からJ列までを、一つのファイルにコピーしたいと思っています。 ネットで調べてみたところ、エクセルで複数ファイルにある特定のシートの 特定した範囲を一つのファイルにコピーするマクロを探すことができました。 複数のシートから特定のシートのA列に文字がある場合は、J列までを一つのファイルの同じシートにコピーするようなことは出来ないでしょうか? (例えば、各ブックA列に10行ずつ文字がある場合は、このようなとりまとめをできないかと考えています。) ブック1(シート名:Q2)⇒集計シートのA1:J10 ブック2(シート名:Q2)⇒集計シートのA11:J20 ブック3(シート名:Q2)⇒集計シートのA21:J30 Sub ブック集合() Dim FileName As String Dim c As Integer Dim OpenedBook As Workbook Dim IsBookOpen As Boolean ChDir "c:/test" FileName = Dir("*.xls") Application.ScreenUpdating = False Application.DisplayAlerts = False c = 0 Do While FileName <> "" If FileName <> ThisWorkbook.Name Then IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If Workbooks(FileName).Sheets("Q2").Range("A1:J500 ").Copy _ ThisWorkbook.Sheets(3).Cells(c * 500 + 1, 1).PasteSpecial(xlPasteValues) c = c + 1 If IsBookOpen = False Then Workbooks(FileName).Close End If End If FileName = Dir() Loop Application.DisplayAlerts = True Application.ScreenUpdating = True 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 いずれもだめでした 良い方法をお教えください。

  • 下記質問Vol.3です

    If intSr = 1 Then intRes = MsgBox("追加してもO.K.ですか?", vbYesNo + vbQuestion) If intRes = vbYes Then With cmd .ActiveConnection = cn .CommandType = adCmdText .CommandText = strSQL .Execute End With Call 状態変化(2) End If Else intRes2 = MsgBox("更新しても良いですか?", vbYesNo + vbQuestion) If intRes2 = vbYes Then With cmd .ActiveConnection = cn .CommandType = adCmdText .CommandText = strSQL2 .Execute End With Call 状態変化(2) End If End If End Sub よろしくお願いします。 関連URL:http://www.okweb.ne.jp/kotaeru.php3?q=160999 http://www.okweb.ne.jp/kotaeru.php3?q=161003

  • VBAでB3からLの最終入力までコピー仕方について

    現在、コピー元を"B3:L244"で指定していますが、 B3からL列の最後に書かれている範囲内でコピー出来る様にしたいのですが教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Dim RC As Integer Dim OpenFileName, fileName, Path, SetFile As String Dim wbMoto, wbSaki As Workbook Set wbMoto = ActiveWorkbook 'マスターデータ取り込み元をセット Application.DisplayAlerts = False RC = MsgBox("マスターデータ取込みますか?", vbYesNo + vbQuestion, "確認") If RC = vbYes Then OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログボックスを表示して、マスターデータファイルを指定します。 If OpenFileName <> "False" Then SetFile = OpenFileName Else MsgBox "キャンセルされました" Exit Sub 'マスターデータの取り込みをキャンセル End If Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 'ダイアログボックスで指定したマスターデータファイルを開きます。 Set wbSaki = Workbooks.Open(Path & SetFile) 'ワークブック間のシート「項目」をコピーします。 wbSaki.Worksheets("Sheet1").Range("B3:L244").Copy wbMoto.Worksheets("1月").Range("B2").PasteSpecial xlPasteValuesAndNumberFormats Application.CutCopyMode = False 'コピー切り取りを解除 wbSaki.Close False 'マスターデータ取り込み先のファイルを閉じる Else MsgBox "処理を中断します" End If Application.DisplayAlerts = True End Sub

  • (VBA)ブックを閉じるプログラム

    表題の通りで、マクロを使ってブックを閉じるプログラムが作りたいです。 具体的には、 "終了"というボタンを作って、このボタンを押したときのみ変更を保存せずに、ブックを閉じる。 右上のXマークを押して閉じようとした場合は、"終了ボタンで終了して下さい"とメッセージを 表示させて、必ず終了ボタンで閉じる。 のようなプログラムです。 ネットで調べ、みよう見まねでプログラムを組んでみましたが、完全にブックが消えません。 また×ボタンを押した場合にブックを閉じない様にするプログラムが分かりません。 <組んでみたプログラム> Sub test2() Application.DisplayAlerts = False Workbooks("Book1.xls").Close Application.DisplayAlerts = True End Sub ご教授お願い致します。