
Excelのアドインを作成しています。
特定のファイルにだけ適用したいため、そのファイルのWorkbookのopenイベントでAddin.Installed = Trueにするようにしています。
Addin.Installed = Falseにするタイミングをアドイン側(xlaファイル)のWorkbookのcloseイベントに入れてしまうと Addin.Installed = Falseにした時点で自分自身(xlaのWorkbook_close)を呼び出してしまいます。
if Addin.Installed = Trueを入れていますのでAddin.Installed = Falseが2回実行されるわけではないのですが 再帰的な呼び出しを回避する方法はないでしょうか?
終了時にexcelがエラーを起こして "エラー送信"画面が出てしまって ここら辺があやしいのではと思っています。
環境はWindowsXP Excel2002 SP3 です。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんばんは。
>特定のファイルにだけ適用したいため
&
>特定のブック、というのが"複数の特定のブック"ですので ブック側の
>Workbook_BeforeClose に記述してしまうと1つのブックだけ閉じると同時に
>開いていた別の特定のブックのアドインも解除されてしまうので アドイン側
>に入れようとしました。
ご存知なのかもしれませんが、特定のブックと1つのマクロブックとを繋げる設定スタイルというのは、アドインではなくて、「参照設定」ですね。その設定されたブックの1つでも開いている限りは、参照設定された側のマクロブックを閉じることができません。
それを非表示のままにしておけば、アドインとの差はないような気がします。
余計なことかもしれませんが。
お礼遅くなり申し訳ありません。
参照設定とアドインの違いをよく理解していないのですが 作成したXLAファイルはデフォルトのADDINSフォルダに入れていて、Excelを起動しれば参照設定しなくてもツールのアドインに分析ツールなどと同様に表示されています。
あああ.xlaとすると それをvbaで特定のブックの起動時に
Set a = AddIns("あああ")
a.Installed = True
というようにcheckedの状態にしてXLAの終了時にFalse(unchecked)にしていますので VBAのコード的にも参照設定はさせていません。このやり方ですとXLSブック側でa.Installed = Falseが実行されると同時に開いている他の特定のブックも同じ状態(unchecked)になりました。それでXLA側に記述しました。XLAにはその他SqlServerからのデータ取得などの共通Functionを入れています。
excelのアプリケーションは殆ど作ったことがなくアドインも今回初めて作りましたので根本的な使い方に無理があるのかもしれません。
アドバイスありがとうございました。
No.1
- 回答日時:
ちょっと、コード的に良く分からない部分もありますが、特定のブックの、Workbook_Open イベントに、ユーザーのAddin をインストールしたとして、
>Addin.Installed = Falseにするタイミングをアドイン側(xlaファイル)のWorkbookのcloseイベントに入れてしまうと
なぜ、アドイン側のWorkbook_BeforeCloseイベントに入れるのですか?
アドインを操作するのは、アドイン自身は特に関係ないと思いますが。
特定のブック側のWorkbook_BeforeClose だけで十分では?
この回答への補足
その後、いろいろ試しましたところ アドインの標準モジュールにSub Auto_Closeを追加してWorkbook_BeforeCloseの記述をそのまま移したところ"エラー送信"画面は出なくなりました。
いろいろ調べているときにExcel 2002 のバグとして"DDE リンクが含まれる Excel ブックを閉じると Excel が予期せず終了してエラー メッセージが表示される"というのを発見しました。このバグはOfficeのSP3をインストールすることで修復されるはずなので修復されているはず、なのですが 現象としてはこれに該当するように思います。
アドインの使い方が間違っているかもしれないのですが とりあえず一番の問題であった"エラー送信"画面は解決しました。
ありがとうございました。
回答ありがとうございます。
特定のブック、というのが"複数の特定のブック"ですので ブック側のWorkbook_BeforeCloseに記述してしまうと1つのブックだけ閉じると同時に開いていた別の特定のブックのアドインも解除されてしまうので アドイン側に入れようとしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) excelvbaのenableeventsについて 3 2022/08/30 11:20
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで別ブックをバックグ...
-
Excelでブックの共有を掛けると...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルにおける,「ブック」...
-
フォルダ内の複数ブック・シー...
-
Excelの警告について
-
Excelファイルをダブルクリック...
-
エクセル:特定のブックのみ、...
-
印刷しようとすると強制終了に...
-
エクセルでウィンドウの枠固定...
-
「ブックの共有」を有効にして...
-
エクセルを開くと最大化などの...
-
vbaでpdfを開いて1ページ目のみ...
-
複数のセルをコピーし、別シー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
Excelの新しい空白のブックを開...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelの警告について
-
Excelで複数ブックの同一セルに...
-
フォルダ内の複数ファイルから...
-
同じフォルダへのハイパーリン...
-
エクセルにおける,「ブック」...
-
別ブックから入力規則でリスト...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
エクセルファイルを開かずにpdf...
-
「ブックの共有」を有効にして...
おすすめ情報