BeforeSaveイベントを使用してコードを実行するブック( "CodeBook.xlsm")があります。ユーザーが複数のワークブックを開いていてファイル/終了でExcelを終了することを選択すると、ワークブックを保存するかどうかを確認するメッセージが表示され、はいの場合はBeforeSaveコードが実行されます。問題は、その時点でActiveWorkbookは、ユーザーがExcelの終了を選択したときのワークブックでない限り、CodeBook.xlsmではない可能性があります。ユーザーが別のブックからExcelを終了すると、BeforeSaveコードが実行されていますが、アクティブワークブックはユーザーのランダムなファイルなので、BeforeSaveコードの特定のワークシートおよび範囲への参照はすべて機能しません。VBA以外のExcelで特定のブックをアクティブにする方法
私はCodeBookとworkbook()の名前を保持するために静的宣言を使用して様々な方法を試しましたが、アプリケーションを終了するときにactivateすることでBeforeSaveを実行すると、名前をコードにハードコードするのには不十分です。
提案がありますか?実行中のコードがないときに変数名を保持する方法、ユーザーが終了するときに変数を保存する方法、またはExcelがapplication.quitではなくユーザーコマンドから終了するときに特定のブックをアクティブにする方法。 using excel 2010.
VBAは、特定のブックに取り付けられ、このブックがアクティブであるときアクティブとアクセス可能となります。同じイベントに同じ名前の2つの関数があり、1つはワークブック「A」に属し、もう1つはワークブック「B」に属するとします。これは合法ですか?もちろん!!!一貫性を維持するために、** Excelの現在の範囲**はアクティブなワークブックのものです。私が考えることができる唯一の解決策は、Excelを開くとすぐに(ファイルの有無にかかわらず)アクセス可能なExcel自体にプラグインを構築することです。 – FDavidov