Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4835 / 13646 ツリー ←次へ | 前へ→

【54124】VBAからのアドイン参照 しろうと 08/2/25(月) 18:55 質問[未読]
【54127】Re:VBAからのアドイン参照 neptune 08/2/25(月) 19:44 発言[未読]
【54149】Re:VBAからのアドイン参照 しろうと 08/2/26(火) 19:45 お礼[未読]
【54156】Re:VBAからのアドイン参照 neptune 08/2/26(火) 21:50 回答[未読]
【54157】Re:VBAからのアドイン参照 neptune 08/2/26(火) 21:52 発言[未読]
【54166】Re:VBAからのアドイン参照 しろうと 08/2/27(水) 12:26 お礼[未読]
【54169】Re:VBAからのアドイン参照 neptune 08/2/27(水) 13:18 発言[未読]

【54124】VBAからのアドイン参照
質問  しろうと  - 08/2/25(月) 18:55 -

引用なし
パスワード
   はじめまして。

ExcelVBAで組んだもののうちよく使うものをアドイン化して
共通で使えるようにしようとしています。

初めてのことなので色々調べながらそれらしくやってみたのですが、
アドインを呼び出すコードを実行すると「問題が発生したため〜」となり
エクセルごと落ちてしまい途方に暮れています。

何が問題なのか調べる為に色々試してみたところ下記のパターンで
エラーが起こっているところまではわかりました。
アドインの呼び出し後、上書き保存すると次回にエラーが起こるようです。

1. アドインを参照しているブックを開く(マクロ有効)
2. アドインを参照するコードを実行→「問題が発生したため〜」
3. 再び同ブックを開く(マクロ無効)
4. そのまま上書き保存して閉じる
5. 同ブックを開く(マクロ有効)
6. 問題のコードを実行→正常に実行されます
7. そのまま上書き保存
8. 1 に戻る

複数の端末で試してみたのですが、同様の現象が起こります。
ちなみに環境は WindowsXPSP2 + Office2003SP2 で、
アドインへの参照はVAEの「参照設定」で行っています。

解決方法はあるでしょうか?よろしくお願いします。

【54127】Re:VBAからのアドイン参照
発言  neptune  - 08/2/25(月) 19:44 -

引用なし
パスワード
   ▼しろうと さん:
こんにちは

仕様などがまったく判らないので原因はわかりませんが
先ず、このあたりを読んで、
ht p://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/odeopg/html/deovrwheretogofromherech09.asp

後はAPI、オブジェクト変数などを使用している場合、
その後始末がきっちりされているかとかの調査を地道にしていくしかないかと
思います。

【54149】Re:VBAからのアドイン参照
お礼  しろうと  - 08/2/26(火) 19:45 -

引用なし
パスワード
   neptuneさん
ありがとうございます。
ご指摘の通り、仕様について一切触れていないので、
これじゃあ質問になりませんね。

実は、実際にアドイン化したいコードにはAPIも含まれているのですが、
問題を切り分ける為にごくごく簡単なコードでテストしていました。

↓こんな感じです。
【アドイン側】
 (標準モジュール)
 Function testCountUp(num As Integer) As Integer
   testCountUp = num + 1
 End Function

【呼び出し側】
 (標準モジュール)
 Sub test()
   MsgBox testCountUp(1)
 End Sub

 これをシート上に配置したボタン(フォーム)に登録して実行。

結果は質問の通りです。
これでも起こる問題だったので、仕様以前の超初歩的なミスをしているのでは…
と思い、あんな丸投げのような質問になってしまいました。

教えていただいたサイト等でもう少し勉強しながらテストしてみます。
ありがとうございました。

【54156】Re:VBAからのアドイン参照
回答  neptune  - 08/2/26(火) 21:50 -

引用なし
パスワード
   ▼しろうと さん:
こんにちは

もう見ないかな?

UPされたソースをコピペで検証しましたが、正常に動作しましたよ。

検証作業
コピペ(但し、Function testCountUpをpublic Function testCountUpと明示した。)
プロジェクト名を適当に変更(AddInTestとした)
(Test.xla)として、保存
新規Bookで、
ツールメニュー
  アドイン
で、Testにチェック
シート上ででUser関数として使用→OK

 VBE側で、参照設定
標準モジュール上で
 Sub test()
     MsgBox testCountUp(1)
  End Sub
としてOK

問題なし。

【54157】Re:VBAからのアドイン参照
発言  neptune  - 08/2/26(火) 21:52 -

引用なし
パスワード
   追記:検証環境
WinXP SP2
Office2000

【54166】Re:VBAからのアドイン参照
お礼  しろうと  - 08/2/27(水) 12:26 -

引用なし
パスワード
   neptuneさん
ありがとうございます。

お礼とお詫びと報告です。

あれからも色々調べながらテストを繰り返していたのですが、
どうも必ずしも質問したパターンでも問題が発生しないことがわかってきて、
ますます途方に暮れていたのですが…。
わかりました。(少なくとも問題が発生しなくなりました。)
コンパイル忘れです。
アドイン側でプロジェクトのコンパイルをしなかったときに
問題が発生します。

コードの検証までしていただいてありがとうございます。
そしてこんな茶番につき合わせてしまって申し訳ありませんでした。
もし私と同じところでつまずいている人がいるならと思い(いないか?)、
恥ずかしながらの結果報告です。
お騒がせしました。

【54169】Re:VBAからのアドイン参照
発言  neptune  - 08/2/27(水) 13:18 -

引用なし
パスワード
   ▼しろうと さん:
こんにちは
解決してよかったですね。

>わかりました。(少なくとも問題が発生しなくなりました。)
>コンパイル忘れです。
>アドイン側でプロジェクトのコンパイルをしなかったときに
>問題が発生します。
へぇ〜そんな事があるんですねぇ〜。。。知りませんでした。
でも、普通アドインにする前に全ての機能をテストしますから
コンパイルはしますからね。

いや、新発見でした。

4835 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free