
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ManagementClassが見つからない。
-
vc++ dll excel vba
-
エラーメッセージ
-
意味不明の実行時エラーで困っ...
-
【VB.NET】開いているフォルダ...
-
アプリからVB(Form)
-
今回、windows 環境下で動くデ...
-
DataGridViewの並び替え
-
同じIEのウィンドウで、リンク...
-
ListViewの使い方
-
「名前'Evaluate'は宣言されて...
-
確率について
-
このコードはどこが間違ってい...
-
DLLファイルの破損
-
window.printについて
-
ActiveXで印刷処理
-
Windows10,VisualStudio2017で...
-
フォント色つけ
-
Excelで文字を数値に変換する方...
-
Notepad起動のイベントでEXC...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
VB.NETでDLLを読み込ませる時に...
-
VB.NETで参照設定したDLLの修正...
-
VB.Net リビルド 意味不明なメ...
-
VB2010で作成したdllからtlbが...
-
C#ソースをCSCファイルにてコン...
-
オブジェクト(dll)のレジストリ...
-
IT初心者です 仕事で、vb.netで...
-
Using System.Drawing がうまく...
-
VB2008→VB2010でエラーが出てま...
-
VBAの参照設定について
-
DLLを作成してVBAから使用する...
-
ビルドが実行できない 先へ進...
-
MS Visual Studio 6.0のEnterpr...
-
Windows10のVBAでDirectX 8が使...
-
VB6.0で作成したプロジェクトの...
-
Excel-VBAでDSOFile.dll使える?
-
ActiveMovie Control Objectを...
-
EXCEL2000でVBAでWinsockをしたい
おすすめ情報