c#、VS2005、および.NET2.0を使用します。(XP 32ビット)これは、Interopライブラリを介してVBAアドイン(.xla)によって呼び出されるWinformsアプリです。このアプリはしばらく前から存在しており、アセンブリをコンパイルして開発マシン以外の場所で実行すると正常に動作します。開発では、(デバッガーでオブジェクトを実行しているだけで)「EXCEL.EXEの0xで未処理の例外:0x...違反読み取り場所0x.. ..
しかし、ここに奇妙な部分があります:
私のインターフェースの最初の方法はうまくいきます。他のすべてのメソッドは上記のようにクラッシュします。コードの概算は次のとおりです。
[Guid("123Fooetc...")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IBar
{
[DispId(1)]
void ThisOneWorksFine(Excel.Workbook ActiveWorkBook);
[DispId(2)]
string Crash1(Excel.Workbook ActiveWorkBook);
[DispId(3)]
int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
}
[Guid("345Fooetc..")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyNameSpace.MyClass")]
public class MyClass : IBar
{
public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook)
{...}
string Crash1(Excel.Workbook ActiveWorkBook);
{...}
int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
{...}
}
ある種の環境問題のようです。レジストリが混乱しましたか?コードのバグである可能性がありますが、他の場所では正常に機能します。