|
▼ko-papa さん:
こんにちは。
そんなに間違っている記述には見えませんけどねえ・・・。
WindowsのバージョンとExcelのバージョンを記述してください。
私は、Win2000&EXCEL2002ですが、同じような共有モジュール
(実際には、共有プロジェクト でしょうか)という方法を
いくつも使っていますよ!!
私は、この共有プロシジャーをXLAファイルつまり、アドインとして
登録しています。
・新規ブックの ThisWorkbookのモジュールに例としてのプロシジャー
'==========================================================
Option Explicit
Sub 足し算(ByVal x As Variant, ByVal y As Variant, z As Variant)
z = x + y
End Sub
簡単な足し算するコードです。
・このブックのプロジェクト名をVBA Projectのプロパティにて
「共有プロシージャ」と書き換えます。
・当該ブックをアドインとして、保存します。
保存ファイル名も共有プロシージャ.XLAとしましょう。
・Excelに戻って、「ツール」---「アドイン」とクリックし、
アドインダイアログを表示させます。
・有効なアドインの一覧に「共有プロシージャ」があれば、チェックを入れてください。
・なければ、参照ボタンをクリックして、「共有プロシージャ.XLA」を保存した
フォルダを見つけて選択してください。
・これでアドイン「共有プロシージャ」の設定がなされます。
・一度、Excelを終了し、再度Excelを起動してみてください。
・新規ブックの作成してください(もっともExcel起動すれば、新規ブックが
作成されているはずですが)
・VBEにて、この新規ブック(BOOK1)のプロジェクトをアクティブにした状態で
「ツール」---「参照設定」にて、共有プロシジャーにチェックを入れてください。
・BOOK1の標準モジュールに
'============================================================
Sub main()
Dim a As Long, b As Long, c As Long
a = 55: b = 45
共有プロシジャー.ThisWorkbook.足し算 a, b, c
MsgBox a & "+" & b & " = " & c
End Sub
上記のmainを実行すれば、100という答えが表示されます
もっとも私の環境では、参照設定をしなくても
'===============================================================
Sub main2()
Dim a As Long, b As Long, c As Long
a = 55: b = 45
Workbooks("共有プロシジャー.xla").足し算 a, b, c
MsgBox a & "+" & b & " = " & c
End Sub
というコードでも正しい結果(55+45=100)を表示します。
Personalにコードを入れるより、アドインにしたほうが後々の扱いは
楽だと思いますよ!!
(内容によっては、プロジェクトを分けられるしね)
私の場合、実際の運用は、上記とはちょっと違い、
クラスモジュールにコードを記述して
必要に応じて、呼び出し側でインスタンスを作成すると言うような運用を
していますが、まあこれがうまくいくようなら検討してみてください。
|
|