|
こんばんわ。
COMアドイン(DLL)は普通はレジストリに登録されてるはずやから
そっからデータを取得したらええんとちゃいまっか?
取得するにはDLLのクラス名を知っておく必要があります。
自分で作ったんやったら、わかってるとは思うけど、
クラス名=プロジェクト名.デザイナモジュール名です。
VbaProject.Disigner1 なんて感じ。
レジストリからDLLのパスを取得する関数を作ってみました。
Function GetDllPath(ByRef Class As String) As String
Dim WSH As Object
Dim ClassID As String
On Error Resume Next
GetDllPath = ""
Set WSH = CreateObject("Wscript.Shell")
ClassID = WSH.RegRead("HKCR\" & Class & "\Clsid\")
GetDllPath = WSH.RegRead("HKCR\CLSID\" & ClassID & "\InprocServer32\")
GetDllPath = Left$(GetDllPath, InStrRev(GetDllPath, "\") - 1)
Set WSH = Nothing
End Function
↓こんな感じで取得できると思います。
Sub test()
MsgBox GetDllPath("VbaProject.Disigner1")
End Sub
但し、この方法は開発中はレジストリに未登録なんで、使えまへん。
DLLを作成したら使えるようになるってこと。
せやから開発環境での動作チェックは・・・無理やね(^^;;
開発中は上記のコードはコメントアウトして、固定のパスを使い、
DLL作成前にコメント解除するとかやろねー
ま、いっぺん試してみてな。
ほな。
|
|