C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 10 を表示中)
■1567 / )  Re[1]: COMオブジェクトを使用したEXCEL操作で、HRESULT
□投稿者/ よねKEN (8回)-(2007/02/27(Tue) 17:03:20)
よねKEN さんの Web サイト
> // 範囲を獲得
> long lRowCnt = insData.GetLength(0);
> long lColCnt = insData.GetLength(1);
> xlRange = xlWorkSheet.get_Range("A3", Type.Missing);
> xlRange = xlRange.get_Resize(lRowCnt, lColCnt);

はずしているかもしれませんが、lRowCnt, lColCntがlong型なのが気になります。
C#のlong型(8バイト)に対応するExcel VBAの型はないのでどのようにマーシャリングされるのだろうか?
という疑問がふと沸きました。

Resizeプロパティの両引数はVariant型ですが、その中に入るのはExcelVBA上に存在する型だけですから、
8バイト整数はないので、Currency型に解釈されるのか、CDec関数でのみ作成できる十進型と解釈されるのか、
あるいはExcelVBAのLong型(4バイト)として、上位4バイトは闇に葬られるのか?読めません。

xlRange = xlRange.get_Resize((int)lRowCnt, (int)lColCnt);
としてみるとどうでしょうか?

返信 編集キー/


管理者用

- Child Tree -