アプリ版:「スタンプのみでお礼する」機能のリリースについて

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件)

Express Edition で動作確認しました。

何かと面倒ですね。
おっしゃるとおり、.tlb ファイルは作成されませんでした。

「アセンブリを COM 参照可能にする」にチェックをつけてビルドし、
出来た dll を配布場所にコピーしてから、regasm.exe を使って以下のように入力してください(pathは具体的な配布場所)。
regasm (path)\hoge.dll /tlb:(path)\hoge.tlb /codebase
これで、COM 登録が完了し、tlb ファイルが作成されます。
この状態でVBAで参照設定してみてください。

以上試してみてください。

#COM 登録解除は regasm の /unregister オプションです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
私の開発環境にはregasm.exe がありません。
もう少しのところにきたようです。
よろしくお願いします。

お礼日時:2008/09/02 12:03

Express Edition には、確かにありませんでした。

。。m(__)m

プロジェクトのプロパティの「アプリケーション」タブ内に「アセンブリ情報」ボタンがあり、その中に「アセンブリを COM 参照可能にする」というチェックをONにしてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。やってみましたが変化がないようです。タイプライブラリも作成されていないようです。

お礼日時:2008/08/20 09:10

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だと仮定しています
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご回答いただいた内容を元にググっており,大変参考になっています。
ただ,自分が使っているVisual Basic 2005 Express Editionには,

VB2005側のDLLプロジェクトのプロパティ > コンパイルの
『COM相互運用機能の登録』にチェックをつけておきます

というのが無いみたいです。(見つけられないだけかも?)
Express Editionにはタイプライブラリを作成する機能がないのでしょうか?それすら判りません(泣)

すみませんがもう少し助けてください。
よろしくお願いします。

お礼日時:2008/08/19 08:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています