• ベストアンサー

Excelで保存を中止する方法

エクセルで教えてください。 Excelで上書き保存をクリックすると保存されます。 これを中止させたい場合どうしたらいいでしょうか。 VBAでWorkbook_BeforeSaveでCancel = Trueにして保存できないようにしました。 これで保存は出来なくなりました。 でも、閉じるをクリックすると「保存しますか」とのメッセージが出て「はい」をクリックすると、なんどでも同じメッセージが出ます。 「いいえ」をクリックすれば閉じますが、メッセージを出さないとか、「はい」をクリックしても閉じる方法はないでしょうか。 宜しくお願いします。

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

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

Excelは「更新内容を保存したか?」を認識していて、更新後に閉じるときに保存作業が行われていない場合「保存しますか」と聞くようになっています。  Thisworkbook.Saved で、それを管理していて。Trueなら「保存済み」Falseなら「未保存」です。 なので、閉じる前に  ThisWorkbook.Saved = True としてあげればOKです。絶対上書き保存しない、と言う事なら Workbook_BeforeClose イベントで行えば良いでしょう。 Private Sub Workbook_BeforeClose(Cancel As Boolean)   ThisWorkbook.Saved = True End Sub 上記のソースを加えたら必ず一度、手動で「上書き保存」して下さいね。 そのまま閉じたら、上記ソースは保存されませんので(笑)

Hirorin_20
質問者

お礼

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

関連するQ&A

  • EXCELマクロ 保存禁止させるには?

    EXCELのファイルを閲覧のみにしたいので、 [上書き保存]、[名前をつけて保存]等を禁止にするため、 以下のようにマクロを作成しようとしました。 EXCELマクロ、Workbook_BeforeSaveで、Cancel=Trueのコードを追加。 しかし、このマクロを入れるとこのブック自体が保存できないんです。 どうすればよいでしょう?

  • エクセルVBAのイベント処理のタイミングについて

    エクセルのイベント処理にWorkbook_BeforeClose、Workbook_BeforeSaveってのがありますが、セルに変更を加えてウィンドウの×印をクリックすると、BeforeCloseが先に割り込まれ、次に”変更を保存しますか?”となりはいと答えると、最後にBeforeSaveが割り込まれ、保存して終わります。最後の最後の保存が終わったあとに処理がしたい場合行うことは不可能なのでしょうか?それとも、一番最後の保存という行為を強制中止させる方法ってあるのでしょうか? どなたか?詳しい方教えていただけませんでしょうか?宜しくお願い致します。

  • エクセルVBAにて保存するとき

    Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?

  • access保存時にVBAを実行

    Accessを保存するときにVBAを実行することはできるのでしょうか? 調べてもAccessは情報が少なくてこれといったものがありません ExcelのWorkbook_BeforeSaveみたいなイメージです

  • エクセル「読み取り専用」を変更出来なくする設定は?

    エクセル2000です。 BOOKの属性を「読み取り専用」としているのですが、この属性を変更不可と出来ないものでしょうか?設定したときのやりかたと同じですが、開く前のBOOKのアイコンを右クリックして「プロパティ」の「全般」で、中にある「属性」の「読み取り専用」のチェックをはずすと簡単に変わってしまいます。 VBAでWorkbook_BeforeSaveを使って上書き保存が出来ないようにすることは十分可能でしょうが、できればせっかく用意されている「読み取り専用」という属性を活かしたいと思い質問いたしました。 よろしくおねがいいたします。

  • Excel2000の保存時のイベントプロシージャ

    エクセル2000で、あるセルが空白なら警告メッセージボックスを出して 保存できないようにする、というプログラムをVBAで作りました。 VBEで一行ずつ走らせるとちゃんとメッセージボックスが 出てくるのですが、実際にブックからD6を空白にしたまま保存しようと したらメッセージボックスが出てこずに保存できてしまいます。 どこかで、設定が必要なのでしょうか? Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With Worksheets("sheet1") If .Range("D6").Value = "" Then MsgBox "please enter D6 field.", vbCritical, "警告" Cancel = True End If End With End Sub

  • VBAでのマクロの削除方法について教えてください。

    ACCESS2000のVBAから、excelのThisWorkbookに書かれたVBAマクロ「Sub Workbook_BeforeSave」を削除したいのですが、うまくいきません。どなたか方法を教えてください。よろしくお願いいたします。

  • エクセル保存出来ない様にするには。

    エクセル保存出来ない様にするには。 お世話になります。 自宅でExcel2002VBA、職場でExcel2003VBAを使用しています。 職場で原紙ファイルに書き込み保存してしまう人がいる為、その対策として ボタンを設けて読取専用モードで、原紙ファイルを開く手順にしています。 Workbooks.Open Filename:=totoFullName, ReadOnly:=True 確かに上書き保存は出来ませんが、名前を変えて保存しますかメッセージが表示され保存可能な状態になってしまいます。 名前を変えて保存を含め、全ての保存が出来ない用にする方法がありましたら 教えて頂きたくよろしくお願いします。

  • 【Excel VBA】 マクロ無効で開かれた共有ファイルに記入できなくする方法?

     こんにちは.質問させていただきます. どうぞよろしくお願いいたします.  共有フォルダに,SelectionChangeイベントを含むエクセルファイルを入れております. マクロ無効状態で操作&保存されるとおかしくなってしまうので マクロ無効で開かれた際に閲覧しかできないように,もしくは無効では開けないように したいのですが,何かよい方法は無いものでしょうか???  試しに,閉じる際に全セルロック状態にして,開く際に解除すればいいかな?と考え, Workbook_BeforeSaveで,Cells.Locked = True としましたところ, 作業中に一度保存すると,再起動しない限り作業続行できなくなってしまいます. Workbook_BeforeCloseで,Cells.Locked = True としましたところ, このイベントのせいなのか,クローズ時にメッセージ「上書き保存しますか?」となり, 「いいえ」を選択すると次回,セルロックされていない状態で開けてしまいます.  何かよい方法は無いものでしょうか?エクセル2003を使用しております.  もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします.

  • エクセルで「名前を付けて保存」を自動的に名前を付けて保存したい

    エクセルで「名前を付けて保存」をする時に自動的に名前を付けて保存が出来るように出来ないでしょうか。 エクセルで見積書を作成後に「名前を付けて保存」→「受注番号入力」をしているので、これを「名前を付けて保存」をクリックした時にファイル名を自動的に受注番号が入れば少しでも時間短縮が出来るかと思い、相談させていただきます。 自分なりに参考書などを読み、下記のようになると思ったのですが、出来ません。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If SavaAsUI Then Application.EnableEvents = False Application.Dialogs(xlDialogSaveAs).Show _ Arg1:=Me.Path & Application.PathSeparator & Sheet(1).Range("A1").Value Application.EnableEvents = True Cancel = True End If End Sub シート1に見積書があり、シート2、シート3はありません。 「A1」のセルに受注番号が入っています。 これのどこがダメなのか教えてもらえませんか。 もし、他に方法があるのであれば教えていただけませんか。 ご無理申します。

専門家に質問してみよう