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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1567 の関連記事表示

<< 0 >>
■1567  Re[1]: COMオブジェクトを使用したEXCEL操作で、HRESULT
□投稿者/ よねKEN -(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);
    としてみるとどうでしょうか?
記事No.1541 のレス /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -