土曜日, 4月 28, 2007
[VBA or VB2005]VBAとVBで同じ処理をしたいとき?
▼質問
VBAとVBで同じ処理をしたいときはどうしたらいいのだろう?
▼回答
VCでDLLを作成してWin32APIのように呼ぶしかないのかな?
このサイトに.NETでCOMとして作成してVBA側で参照設定をして使用できる方法もあると
書いてあるがどうなんだろう?
(このサイトはいろんな情報が充実していてすごい!すばらしい!!)
http://7ujm.net/VB/VBAVBnetActiveX.html
VB2005で試しにやってみたらCOMの登録でアセンブリの警告が出た!
作成方法
①プロジェクトの作成でクラスライブラリ(DLLの作成)を選ぶ。
②クラスファイルにコードを記述する。
③プロジェクトのプロパティから「コンパイル」を選択して「COM相互運用機能の登録(I)」を
チェックする。
④「スタート」→「全てのプログラム(P)」→「Microsoft Visual Studio 2005」→「Visual Studio Tools」
→「Visual Studio 2005 コマンド プロンプト」を起動してCOMの登録を行う。
C:\>regasm ○○○○○.dll /tlb /codebase
※解除方法:C:\>regasm ○○○○○.dll /unregister
ここで下記の問題?警告が発生!
「RegAsm : warning RA0000 : 署名されていないアセンブリを /codebase を使用して登録すると、同じコンピュータにインストールされるその他のアプリケーションとの競合が生じる可能性があります。/codebase スイッチは署名されたアセンブリのみに使用できます。アセンブリに厳密な名前を付けて、再登録してください。型は正常に登録されました。アセンブリは 'C:\○○○\○○○\○○○.tlb' にエクスポートされ、タイプ ライブラリは正常に登録されました。」
▼質問
アセンブリって何だ?
▼回答
署名のため機能らしい。
アセンブリを厳密名で署名するには?[VS 2005のみ]
http://www.atmarkit.co.jp/fdotnet/dotnettips/495strongname2005/strongname2005.html方法 : アセンブリに署名する (Visual Studio)
http://msdn2.microsoft.com/ja-jp/library/ms247123(VS.80).aspx
とりあえず実行してみたら下記のエラーが発生した。
「"ファイルまたはアセンブリ名 ○○○、またはその依存関係の 1 つが見つかりませんでした。"」
下記のサイトの手順で「<新規作成>」から適当なキー・ファイル「○○○_StrongName_Key」を
指定してパスワード無しでやったらうまく登録できたぞ!!ヤッター!!
アセンブリを厳密名で署名するには?[VS 2005のみ]
http://www.atmarkit.co.jp/fdotnet/dotnettips/495strongname2005/strongname2005.html
動かしてみたら今度はオートメーションエラーが発生!(;_;)...
パスが通っているところに移動して登録したら動いたが・・・。下記のエラーでうまくいかない。
「"ファイルまたはアセンブリ名 ○○○、またはその依存関係の 1 つが見つかりませんでした。"」
ここで、実験終了!この方法はとりあえず諦める事にしました。
Visual Basic 6.0 から Visual Basic .NET または Visual Basic 2005 アセンブリを呼び出す方法
http://support.microsoft.com/default.aspx?scid=kb;ja;817248
↑このサイトを読んでいたら通常のクラスとCOMクラスの作成方法に違いがあることが判明!
このサイトの説明文も一部間違っているが。。。。(重要なところ!)
9.[テンプレート] で [クラス] をクリックします。
→9.[テンプレート] で [COMクラス] をクリックします。
もう一度とトライしてみたがまたもエラーでした。でもエラーの内容が変わった。
「"ActiveX コンポーネントはオブジェクトを作成できません。"」
■参考サイト
プログラミング色々
http://7ujm.net/index.html
Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.aspx
Visual Basic .NET How-To インデックス
http://www.microsoft.com/japan/msdn/howto/howtoVB.asp
VBAとVBで同じ処理をしたいときはどうしたらいいのだろう?
▼回答
VCでDLLを作成してWin32APIのように呼ぶしかないのかな?
このサイトに.NETでCOMとして作成してVBA側で参照設定をして使用できる方法もあると
書いてあるがどうなんだろう?
(このサイトはいろんな情報が充実していてすごい!すばらしい!!)
http://7ujm.net/VB/VBAVBnetActiveX.html
VB2005で試しにやってみたらCOMの登録でアセンブリの警告が出た!
作成方法
①プロジェクトの作成でクラスライブラリ(DLLの作成)を選ぶ。
②クラスファイルにコードを記述する。
③プロジェクトのプロパティから「コンパイル」を選択して「COM相互運用機能の登録(I)」を
チェックする。
④「スタート」→「全てのプログラム(P)」→「Microsoft Visual Studio 2005」→「Visual Studio Tools」
→「Visual Studio 2005 コマンド プロンプト」を起動してCOMの登録を行う。
C:\>regasm ○○○○○.dll /tlb /codebase
※解除方法:C:\>regasm ○○○○○.dll /unregister
ここで下記の問題?警告が発生!
「RegAsm : warning RA0000 : 署名されていないアセンブリを /codebase を使用して登録すると、同じコンピュータにインストールされるその他のアプリケーションとの競合が生じる可能性があります。/codebase スイッチは署名されたアセンブリのみに使用できます。アセンブリに厳密な名前を付けて、再登録してください。型は正常に登録されました。アセンブリは 'C:\○○○\○○○\○○○.tlb' にエクスポートされ、タイプ ライブラリは正常に登録されました。」
▼質問
アセンブリって何だ?
▼回答
署名のため機能らしい。
アセンブリを厳密名で署名するには?[VS 2005のみ]
http://www.atmarkit.co.jp/fdotnet/dotnettips/495strongname2005/strongname2005.html方法 : アセンブリに署名する (Visual Studio)
http://msdn2.microsoft.com/ja-jp/library/ms247123(VS.80).aspx
とりあえず実行してみたら下記のエラーが発生した。
「"ファイルまたはアセンブリ名 ○○○、またはその依存関係の 1 つが見つかりませんでした。"」
下記のサイトの手順で「<新規作成>」から適当なキー・ファイル「○○○_StrongName_Key」を
指定してパスワード無しでやったらうまく登録できたぞ!!ヤッター!!
アセンブリを厳密名で署名するには?[VS 2005のみ]
http://www.atmarkit.co.jp/fdotnet/dotnettips/495strongname2005/strongname2005.html
動かしてみたら今度はオートメーションエラーが発生!(;_;)...
パスが通っているところに移動して登録したら動いたが・・・。下記のエラーでうまくいかない。
「"ファイルまたはアセンブリ名 ○○○、またはその依存関係の 1 つが見つかりませんでした。"」
ここで、実験終了!この方法はとりあえず諦める事にしました。
Visual Basic 6.0 から Visual Basic .NET または Visual Basic 2005 アセンブリを呼び出す方法
http://support.microsoft.com/default.aspx?scid=kb;ja;817248
↑このサイトを読んでいたら通常のクラスとCOMクラスの作成方法に違いがあることが判明!
このサイトの説明文も一部間違っているが。。。。(重要なところ!)
9.[テンプレート] で [クラス] をクリックします。
→9.[テンプレート] で [COMクラス] をクリックします。
もう一度とトライしてみたがまたもエラーでした。でもエラーの内容が変わった。
「"ActiveX コンポーネントはオブジェクトを作成できません。"」
■参考サイト
プログラミング色々
http://7ujm.net/index.html
Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.aspx
Visual Basic .NET How-To インデックス
http://www.microsoft.com/japan/msdn/howto/howtoVB.asp