|
▼やまぐち さん:
こんばんは
まず、私自身はアドインは使わない人ですので、実践に基づいたお答えができません。
詳しい回答者さんの登場を心待ちにしています。
とりあえずメモ的に。
>Book1,Book2側ともに変数宣言して値をゲットする方法なのですね。
いえ、あくまでBook1に変数があって、それを取得しています。
サンプルとしては Book2側の変数への取り込みましたが、直接
Application.Run("Book1.xls!GetVal") として参照することはできます。
MsgBox Application.Run("Book1.xls!GetVal")
といったように。
>1.アドイン名可変時の扱い
> アドインは機能追加を想定しファイル名に版数表現を付与しているため
> For Each myModule In AddInsでファイル名を取得しています。
>
> そこで、
> s = Application.Run("Book1.xls!GetVal")
> の箇所を、
> s = Application.Run(myModule.Name & "!" & "GetVal")
>
> としたのですが、見つからないとのエラーとなります。
> どの様な原因が考えられるでしょうか?
その取得したアドインブックに GetValというファンクションプロシジャがあるのに
エラーになったのでしょうか?
とすれば、私にはわかりません。
もし、そのアドインブックに GetVal というファンクションプロシジャがなければ
エラーになるのは当然ですが。
また、アドインは必ずしも1つだけではないですよね。
たとえば、エクセルの分析ツールなどをアドインしておきますと、それらが(あたりまえですが)
アドインブックとして取得されますよね。
For Each で取得したアドインの何番目が、求めるアドインなのか、どうやって判断しようと
しておられるのですか?
冒頭書きましたようにアドインは詳しくありませんが、アドイン名がわからないということは
いささか、問題ありませんか?
> の結果は、"ABC"と推測しているのですが、
>
> Book1.xls側で設定した複数の変数値をBook2.xlsで参照したい際は
> どの様に考えたら良いでしょうか?
これもいろいろ方法はあると思います。
変数毎に取得プロシジャを書いておくと言うことも1つの方法でしょうし
たとえば Book1側で複数の変数を配列の要素としてもたせておいて
1番目は a 、2番目は b といったようにきめておき、
Book2側からは、引数として、その何番目かという値を指定してApplication.Run。
Book1側では、その引数によって 配列の○番目の要素を戻り値にして返すということも
できるでしょうね。
でも、実際にやりたいことは、Book1側の変数が abc という名前なら
Book2側でも、自ブックの変数と同じように abc として参照したいということなんでしょうね。
そこのところは、私にはわかりません。
今までずっと、ご紹介したような方法でやってきましたし、それで(私の場合は)充分でしたので。
お役に立てず、ごめんなさい。
|
|