1

x86 TestDll で使用される C++Builder サードパーティ x86 DLL が多数あります。TestDll は、外部デバイスを初期化し、接続を試みます (サードパーティの DLL を使用)。TestDll は登録されており、Excel でテストできるように可視化されています。これは、Excel の VBA および同様の Visual Basic .Net コードから呼び出されます。

    Dim test As New TestDLL.TestDLL.Class1

    Dim i As Integer

    i = test.Connect()

    If i = 111 Then
        lbl1.Text = "Connected"
    End If

    If i = 222 Then
        lbl1.Text = "Not connected"
    End If

    If i = 333 Then
        lbl1.Text = "Error!!!"
    End If

TestDll への参照が Excel に追加され、コードは正常に "Connected" を返します。同じコードが Windows フォーム アプリケーションから開始されると、"Error!!!" が返されます。

私が混乱していたのは、Visual Basic では、thidr パーティの DLL の参照が C:\windows\assembly\GAC_MSIL\Interop.ThirdPartyDll... という形式であり、参照を追加しているときです。 Excel では、C:\Program Files (x86)\Common Files\ThirdParty\ThirdParty.dll という形式です。

4

2 に答える 2

0

異なる場所に同じ dll の複数のコピーがあるようです。dll の作業コピーを保持し、残りのすべてのコピーを削除できます。dll の作業コピーの参照を追加します。

于 2013-09-09T09:17:55.827 に答える
0

Visual Basic で (動作していない) 参照を削除し、手動でファイルを選択して Excel の参照に置き換えます。

別の可能性: これは完全にエレガントではないかもしれませんが、他の VBA から Excel インスタンスを呼び出し、Excel インスタンス内でコードを実行して、作業ファイルを使用することができます。

マックス

于 2013-09-09T08:59:46.517 に答える