(VBA)ブックを閉じるプログラム
- VBAを使用してブックを閉じるプログラムを作成したいです。具体的には、「終了」というボタンを作成し、このボタンを押したときには変更を保存せずにブックを閉じるようにしたいです。また、右上のXマークを押して閉じようとした場合には、「終了ボタンで終了してください」というメッセージを表示させて、必ず終了ボタンで閉じるようにしたいです。
- 現在、ネットで調べてプログラムを試してみましたが、完全にブックを閉じることができませんでした。また、Xボタンを押して閉じることを防ぐプログラムも見つけることができませんでした。
- VBAを使用してブックを閉じるプログラムを作成したいのですが、うまくいきません。どうぞご教授ください。
- ベストアンサー
(VBA)ブックを閉じるプログラム
表題の通りで、マクロを使ってブックを閉じるプログラムが作りたいです。 具体的には、 "終了"というボタンを作って、このボタンを押したときのみ変更を保存せずに、ブックを閉じる。 右上のXマークを押して閉じようとした場合は、"終了ボタンで終了して下さい"とメッセージを 表示させて、必ず終了ボタンで閉じる。 のようなプログラムです。 ネットで調べ、みよう見まねでプログラムを組んでみましたが、完全にブックが消えません。 また×ボタンを押した場合にブックを閉じない様にするプログラムが分かりません。 <組んでみたプログラム> Sub test2() Application.DisplayAlerts = False Workbooks("Book1.xls").Close Application.DisplayAlerts = True End Sub ご教授お願い致します。
- MAX33
- お礼率46% (190/405)
- その他MS Office製品
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 モジュール、【標準モジュール】と【ThisWorkbookモジュール】 を間違えないようにしてください。 また、2択、3択の部分は、運用面から選んでください。 (コメントブロックを付けたり外したり、それぞれ1つを選ぶということです) ' ' ============================== ' ' 【標準モジュール】 Public blnEnClose As Boolean Sub test2() '(1/2択)マクロの一覧に表示する 'Private Sub test2() '(2/2択)マクロの一覧に表示しない blnEnClose = True Workbooks("Book1.xls").Close SaveChanges:=False '(1/3択)ブックを名前指定で閉じる ' ThisWorkbook.Close SaveChanges:=False '(2/3択)自ブックを閉じる ' Application.Quit '(3/3択)アプリケーションごと閉じる。 End Sub ' ' ※ Private Sub にした場合の呼び出し方は、Application.Run "test2" ' ' ============================== ' ' 【ThisWorkbookモジュール】 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not blnEnClose Then Cancel = True MsgBox "終了ボタンで終了して下さい", vbInformation End If End Sub ' ' ==============================
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7940)
当該のブックを開く ALT+F11を押す プロジェクトエクスプローラから当該のブックのVBAProjectの中に含まれているThisWorkbookをWクリックして開く 現れたシートに下記をコピー貼り付ける private sub Workbook_BeforeClose(cancel as boolean) if flg then exit sub msgbox "CLICK EXIT BUTTON" cancel = true end sub さらに挿入メニューから標準モジュールを挿入し、下記をコピー貼り付ける public flg as boolean sub macro1() flg = true thisworkbook.close savechanges:=false end sub ファイルメニューから終了してエクセルに戻る シート上にオートシェイプ等を使って終了ボタンを作成、右クリックしてマクロの登録でマクロ1を登録する。
お礼
お礼遅くなりました。 解決しました。 有難う御座いました。
関連するQ&A
- vba ブックを変更しないで閉じたい
ブックを開き、 Sub Macro2() Application.DisplayAlerts = False 'セルをいじる処理(A1に「あ」を入れるなど) '・・・ Windows("ブック1.xls").Activate ActiveWorkbook.Close SaveChanges:=False End Sub を実行すると変更があっても何も表示されないで閉じるはずですが とあるブックのみ、 「'ブック1'を保存しますか?」 はい いいえ キャンセル が出ます。 同じコードをブックに対して行なっているのに、実行できる場合と出来ない場合があるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- ブックの終了がうまくいきません
Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub
- ベストアンサー
- Visual Basic
- Excel VBAで別のブックからユーザーフォームの閉じる
Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- フォルダ内の特定ブックだけを1つのブックにまとめる
以前こちらで質問させて頂きましたフォルダ内の特定ブックだけを1にのブックにまとめる方法で、大変助かっていましたがブック名が変更になり、教えて頂いたマクロでは実行できなくなったので自分なりに考えたのですがどうしてもできません。 質問時のブック名は「1_****」と「2_****」で 今回「1_****」だけが「1(3)_****」に変更になりました。 下記のマクロでmyfile = dir(mypath & "1_" & "*.xl*")→myfile = dir(mypath & "1(3)_" & "*.xl*")に変更するのはわかるのですが do until myfile = "" myfile2 = "2" & mid(myfile,2,99)をどう変更すれば良いかわかりません どなたかお助け頂けませんか? sub macro1() dim myPath as string dim myFile as string dim myFile2 as string mypath = "c:\test\" myfile = dir(mypath & "1_" & "*.xl*") do until myfile = "" myfile2 = "2" & mid(myfile,2,99) workbooks.open mypath & myfile workbooks.open mypath & myfile2 application.displayalerts = false workbooks(myfile).worksheets("2").delete application.displayalerts = true workbooks(myfile2).worksheets("2").move after:=workbooks(myfile).worksheets("1") workbooks(myfile).close true workbooks(myfile2).close false myfile = dir() loop end sub
- 締切済み
- オフィス系ソフト
- メッセージの抑制 続き
Excell 2011 でのメッセージの抑制について mu2011 さんにお世話になりました。 Help 画面で調べると次の場合変更は保存されないことになっています。 Application.DisplayAlerts = False Workbooks("BOOK1.XLS").Close Application.DisplayAlerts = True 虫のよすぎる希望ですが、上の場合応答しないで保存してもらう方法は無いのでしょうか? こんな要求、全く虫が良すぎますよね!
- ベストアンサー
- その他MS Office製品
- 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 いずれもだめでした 良い方法をお教えください。
- 締切済み
- Windows XP
- VBAでBOOKを開かずにプロパティ変更
エクセル2013です。 特定のフォルダ内のエクセルのBOOKのプロパティの作成者をすべて変えようと思います。 いろいろ試して、以下のコードでできるようになりました。 しかし、下記のコードではいちいちファイルを開かなくてはなりませんのでサイズが大きかったり、数が多いと結構時間がかかります。 手作業でファイルのプロパティを変えるときは、エクスプローラで右クリックすれば開かなくとも簡単にできます。VBAでもファイルを開かずにプロパティを変更するにはどうすればよいのでしょうか?お教えいただければ幸いです。 Sub TEST20190710() Dim myFdr As String, fnm As String Dim wb As Workbook Dim n As Long Const NEW_AUTHOR As String = "emaxemax" Application.ScreenUpdating = False Application.EnableEvents = False myFdr = "C:\Users\User\Documents\TEST01" fnm = Dir(myFdr & "\*.xls?") Do Until fnm = Empty Set wb = Workbooks.Open(myFdr & "\" & fnm) Application.DisplayAlerts = False wb.BuiltinDocumentProperties("Author").Value = NEW_AUTHOR wb.Close SaveChanges:=True Application.DisplayAlerts = True n = n + 1 fnm = Dir Loop Application.ScreenUpdating = True Application.EnableEvents = True MsgBox n & "件のブックを処理しましました。", vbInformation End Sub
- ベストアンサー
- Excel(エクセル)
- VBAでファイルを保存せずに閉じた後の他ブックの挙動
初めて質問させていただきます。 VBA初心者の為、質問自体に不足があるかもしれませんが、ご協力をお願い致します。 エクセル2000(SP3)で複数のブック(仮にA.xls,B.xlsとします)を起動した状態で、Aをマクロを使って保存せずに終了させたところ、Bの操作が出来なくなります。(セル選択等もできません。Bのsheetを選択するとアプリケーションエラーになってしまいます) 同Windows上に他アプリケーションが起動している場合、それらを一度選択してから再度Excelを選択すると、Bの操作が可能になります。 保存せずに終了させる為のマクロは次のとおりです。 ブックAのThisWorkbook内に記述しています。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Workbooks.count = 1 Then Application.DisplayAlerts = False Application.Quit Else ThisWorkbook.Close SaveChanges:=False End If End Sub 以上、よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセル・エラーを出さずに複数ブックをクローズしたい
複数のファイルを閉じたいのですが、 Sub 必要ファイルを閉じる() Workbooks("あ.xls").Close SaveChanges:=False Workbooks("い.xls").Close SaveChanges:=False Workbooks("う.xls").Close SaveChanges:=False Workbooks("え.xls").Close SaveChanges:=False End Sub 開いていないファイルがあるとエラーで止まってしまいます。 この4つのファイルに該当するものがあれば、閉じる というマクロを組みたいです。 アドバイス、宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
お礼遅くなりました。 解決しました。 有難う御座いました。