概要

Microsoft Excel では、ブックを閉じるときに [変更の保存] プロンプトを表示しない Microsoft Visual Basic for Applications (VBA) マクロを作成できます。 これを行うには、ブックの [保存済み] プロパティの状態を指定するか、ブックのすべてのアラートを非表示にします。

詳細情報

注意:Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 Microsoft サポート エンジニアは、特定のプロシージャの機能の説明を支援できます。 ただし、これらの例を変更して、特定の要件を満たすために追加の機能を提供したりプロシージャを構築したりすることはできません。  以下のいずれかの例を実装する準備をするには、まず次の手順を 実行します。

  1. Excel を起動し、新しいブックを開きます。

  2. Alt キーを押しながら F11 キーを押して Visual Basic エディターを開きます。

  3. [挿入] メニューで [モジュール] をクリックします。

  4. サンプル マクロ コードをモジュール シートに入力します。

  5. Alt キーを押しながら F11 キーを押して Excel に戻ります。

  6. Microsoft Office Excel 2003 以前のバージョンの Excel では、[ツール] メニューから [マクロ] を選択し、[マクロ] をクリックします。 Microsoft Office Excel 2007 では、[開発] タブの [コード] グループにある [マクロ] をクリックします。 [開発] タブが使用できない場合は、次の操作を行うことを検討してください。     a. Microsoft Office ボタンをクリックし、[Excel のオプション] をクリックします。     b. [一般] カテゴリの [Excel の使用に関する基本オプション][[開発]         タブをリボンに表示する] チェック ボックスをオンにしてから [OK] をクリックします。

  7. 目的のマクロを選択し、[実行] をクリックします。

Saved プロパティは、最後に保存されてからブックに変更が加えられた場合、値 False を返します。 予約されたサブルーチン名Auto_Closeを使用して、ブックを閉じるたびに実行するマクロを指定できます。 これにより、ユーザーが Excel でドキュメントを閉じたときにドキュメントを処理する方法を制御できます。  

例 1: 変更を保存せずにブックを閉じる

変更を保存せずにブックを強制的に閉じるには、そのブックの Visual Basic モジュールに次のコードを入力します。  

    Sub Auto_Close()

        ThisWorkbook.Saved = True

    End Sub

Saved プロパティが True に設定されている場合、Excel はブックがすでに保存されており、前回の保存以降に変更は行われていないかのように応答します。 プログラムの DisplayAlerts プロパティは、同じ目的で使用できます。 たとえば、次のマクロは DisplayAlerts をオフにし、変更を保存せずにアクティブなブックを閉じてから、DisplayAlerts を再びオンにします。  

    Sub CloseBook()

        Application.DisplayAlerts = False

        ActiveWorkbook.Close

        Application.DisplayAlerts = True

    End Sub

Close メソッドの SaveChanges 引数を使用することもできます。 次のマクロは、変更を保存せずにブックを閉じます。  

    Sub CloseBook2()

        ActiveWorkbook.Close savechanges:=False

    End Sub

例 2: ブックを閉じて変更を保存する

ブックに変更を強制的に保存するには、そのブックの Visual Basic モジュールに次のコードを入力します。  

    Sub Auto_Close()

        If ThisWorkbook.Saved = False Then

            ThisWorkbook.Save End If

    End Sub

このサブプロシージャでは、ファイルの Saved プロパティが False に設定されているかどうかを確認します。 その場合、ブックは前回の保存以降に変更され、それらの変更は保存されます。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。