3

VBA で記述された古い Excel アドインを VB .NET に移植中です。Excel アドインは、多数の外部 com オブジェクトと対話します。コードは次のようになります。

Dim hurr as Object
Dim durr as String

hurr = CreateObject("COM Object")
durr = hurr.getString

私がやろうとしているのは、COM オブジェクトから文字列を読み取り、それを durr で取得して、後でプログラムで使用することです。

その 2 行目により、上記の例外が発生します。CStr/CType でキャストしようとすると、同じ例外が発生します。Visual Studio のウォッチ ウィンドウは hurr.getString の型を「System.__ComObject」として報告しますが、VBA のウォッチ ウィンドウは型を「Variant/Object/String」として報告します。Microsoft.VisualBasic.Information.TypeName(hurr.getString) は、型が「文字列」であることを示しています。これを機能させるにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

これはばかげていますが、完全を期すためにここに回答を投稿すると思いました。解決策は、hurr.getString の最後に 1 対のブラケットを追加することでした。

したがって、作業コードは次のようになります。

Dim hurr as Object
Dim durr as String

hurr = CreateObject("COM Object")
durr = hurr.getString()

上記のコードでは、キャスト例外が発生しました。何らかの理由で、ここで機能するには括弧が必要です。レイト バインディングの com オブジェクトを操作するのは恐ろしいことであり、絶対に避けるべきであることを付け加えておきます。

于 2009-12-21T20:21:34.473 に答える