Visual Basic 2005 Express EditionでDLLを作成して,エクセルVBAから使用する方法を教えてください。
DLLで提供する関数は,仮に
Public Function TRIM2(ByVal str1 As String) As String
TRIM2 = trim(str1)
End Function
とします。
DLLの作り方とエクセルVBAでの利用のやり方が判りません。
一応,DLLらしきものを作りエクセルVBAから参照を試みましたが,「指定されたファイルへの参照は登録できません。」というエラーになります。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Express Edition で動作確認しました。
何かと面倒ですね。おっしゃるとおり、.tlb ファイルは作成されませんでした。
「アセンブリを COM 参照可能にする」にチェックをつけてビルドし、
出来た dll を配布場所にコピーしてから、regasm.exe を使って以下のように入力してください(pathは具体的な配布場所)。
regasm (path)\hoge.dll /tlb:(path)\hoge.tlb /codebase
これで、COM 登録が完了し、tlb ファイルが作成されます。
この状態でVBAで参照設定してみてください。
以上試してみてください。
#COM 登録解除は regasm の /unregister オプションです。
ご回答ありがとうございます。
私の開発環境にはregasm.exe がありません。
もう少しのところにきたようです。
よろしくお願いします。
No.2
- 回答日時:
Express Edition には、確かにありませんでした。
。。m(__)mプロジェクトのプロパティの「アプリケーション」タブ内に「アセンブリ情報」ボタンがあり、その中に「アセンブリを COM 参照可能にする」というチェックをONにしてみてください。
No.1
- 回答日時:
COM(Component Object Model)として DLLをコンパイルしてtlb(タイプライブラリ)を生成しないと VBAから使用できないですよ
VB2005側のDLLプロジェクトのプロパティ > コンパイルの
『COM相互運用機能の登録』にチェックをつけておきます
ExcelのVBEで ツール > 参照設定で VB2005で生成したComクラスの名前を探します
見つからなければDLLを生成したフォルダーにあるTLBファイルを 参照ボタンから探しましょう
VB2005で作成したCOMはインスタンス経由で関数にアクセスしますので
VBA側では
Dim VBComObj as new MyComClass
Dim ss as string
ss = VBComObj.Trim2( " 123 " )
といった使い方になります
作成したCOMクラスが MyComClassだと仮定しています
ありがとうございます。
ご回答いただいた内容を元にググっており,大変参考になっています。
ただ,自分が使っているVisual Basic 2005 Express Editionには,
VB2005側のDLLプロジェクトのプロパティ > コンパイルの
『COM相互運用機能の登録』にチェックをつけておきます
というのが無いみたいです。(見つけられないだけかも?)
Express Editionにはタイプライブラリを作成する機能がないのでしょうか?それすら判りません(泣)
すみませんがもう少し助けてください。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VBから参照できないCのDLLを使用する方法
Visual Basic(VBA)
-
VB2010で作成したdllからtlbが作れない
Visual Basic(VBA)
-
IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ
その他(プログラミング・Web制作)
-
-
4
オブジェクト(dll)のレジストリ登録について
Visual Basic(VBA)
-
5
VBA2005 16進を2桁で表示したい。
Visual Basic(VBA)
-
6
VBAをDLL化する方法を教えてください。
Visual Basic(VBA)
-
7
「クラスが登録されていません 」
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビルドが実行できない 先へ進...
-
意味不明の実行時エラーで困っ...
-
IT初心者です 仕事で、vb.netで...
-
VB.Net リビルド 意味不明なメ...
-
VB2010で作成したソフトのexeフ...
-
ManagementClassが見つからない。
-
msvcr120d.dllがないというエラー
-
C#ソースをCSCファイルにてコン...
-
VBAの参照設定について
-
VisualStudio2010 DLL作成方法
-
DLLを作成してVBAから使用する...
-
visual studio 2013 エラー
-
VBでの実行時エラー’429’について
-
VB.NETで参照設定したDLLの修正...
-
Using System.Drawing がうまく...
-
SOAP通信。恥を忍んで質問させ...
-
vba 時間の引き算 例えば 15:00...
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
-
Designer.vbは直接コードをいじ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
chatgpt 4oを使っています。あ...
-
VB.Net リビルド 意味不明なメ...
-
VB.NETで参照設定したDLLの修正...
-
オブジェクト(dll)のレジストリ...
-
IT初心者です 仕事で、vb.netで...
-
ビルドが実行できない 先へ進...
-
C#ソースをCSCファイルにてコン...
-
VB.NETでDLLを読み込ませる時に...
-
msvcr120d.dllがないというエラー
-
VB2010で作成したdllからtlbが...
-
VB2008→VB2010でエラーが出てま...
-
SOAP通信。恥を忍んで質問させ...
-
Using System.Drawing がうまく...
-
DLLを作成してVBAから使用する...
-
ExcelでVBAで自動参照設定
-
MS Visual Studio 6.0のEnterpr...
-
VBAからDLLをCALLしたいのですが
-
Windows10のVBAでDirectX 8が使...
おすすめ情報