マクロがブックに追加された場合、Excel ブックを自動的にマクロ有効として保存することは可能ですか?

マクロがブックに追加された場合、Excel ブックを自動的にマクロ有効として保存することは可能ですか?

現在、Excel 2010 では、.xlsx ファイルとして作成し、VBA 関数またはサブルーチンを追加したワークブックを保存しようとすると、Excel は (遠回しに) .xlsm ファイルに変更するかどうかを尋ねるプロンプトを表示します。この質問に対するデフォルトの回答が「はい、保存したためにこのファイルで作業中に行ったすべてのプログラミング作業が削除されることは望ましくありません」であれば、これは問題になりませんが、積極的に「いいえ」ボタンをクリックするか、タブで移動する必要があります。そうしないと、.xlsx ファイルとして保存され、すべてのモジュールが失われます。

これは、デフォルトのオプションがデータを保存するのではなく削除することになっている、私が遭遇した数少ない状況の 1 つです。作業の一部が失われたのは主に私のせいであり、もっと注意する必要があることはわかっていますが、このメッセージを無効にしたり、何らかの方法でデフォルトを変更したりできるかどうかを本当に知りたいです。

答え1

あなたできるしかし、それは面倒で危険です。

  1. VBA に VBA の読み取り/書き込みを許可する (ファイル > オプション > セキュリティ センター > セキュリティ センターの設定 > マクロの設定 > VBA プロジェクト オブジェクト モデルへのアクセスを信頼する)
  2. 個人用マクロブックを作成します(まだ作成していない場合)
  3. ThisWorkbook個人用マクロ ワークブックのオブジェクトで、イベントを使用して+ を他のマクロにWorkbook_Openマップします。(次のようになります)CtrlSApplication.OnKey "^s", "saveAsMacroIfMacrosExist"
  4. イベントを使用してWorkbook_BeforeClose再度オフにします(Application.OnKey "^s"
  5. 関数ではなくサブルーチンを個人用マクロブックのモジュールに記述してください。(これは読者の課題として残しておきますが、私はスニペットを見つけました。こここれは私がテストしなかったものですが、ワークブックにマクロが含まれているかどうかをテストすることになっています。
  6. ツールバーまたは「ファイル > 保存」の代わりにCtrl+を使用してファイルを保存します。S

重要なポイント: これには、VBA プロジェクト オブジェクト モデルへのアクセスを永続的に許可することが必要であり、これは一般的には好ましくありません。

答え2

これをワークブック レベルで変更することはできません。

ただし、Excel ですべてのマクロを常にデフォルトで有効にすることができます。

  1. [ファイル] > [オプション] をクリックします。
  2. [セキュリティ センター] と [セキュリティ センターの設定] をクリックします。
  3. マクロ設定をクリックし、すべてのマクロを有効にする

それはドキュメンテーション

関連情報