■1567 / ) |
Re[1]: COMオブジェクトを使用したEXCEL操作で、HRESULT |
□投稿者/ よねKEN (8回)-(2007/02/27(Tue) 17:03:20)
|
> // 範囲を獲得 > 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); としてみるとどうでしょうか?
|
|