Excel VBA質問箱 IV

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

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


63793 / 76738 ←次へ | 前へ→

【17537】Re:COMアドインから他ブックを開く
回答  bykin  - 04/9/1(水) 21:35 -

引用なし
パスワード
   こんばんわ。

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作成前にコメント解除するとかやろねー

ま、いっぺん試してみてな。
ほな。

0 hits

【17533】COMアドインから他ブックを開く ぱくぱく 04/9/1(水) 20:15 質問
【17537】Re:COMアドインから他ブックを開く bykin 04/9/1(水) 21:35 回答
【17557】Re:COMアドインから他ブックを開く ぱくぱく 04/9/2(木) 10:54 お礼

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