掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Excelの書式一括変更処理 (ID:67233)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Blueさん、回答ありがとうございます。 VS2005にて開発しています。(MFCも使っています) ExcelはExcel2000です。 フォントカラーを例に記述しましたが、実際にはフォントサイズや太字等の文字スタイル 水平・垂直方向への文字位置などの設定も行います。 この時、1セル単位に設定するとかなり時間が掛かってしまいます。 sheet->Range["A1"][vtMissing]->Font->Color = RGB(255,0,0); sheet->Range["B1"][vtMissing]->Font->Color = RGB(255,0,0); sheet->Range["C1"][vtMissing]->Font->Color = RGB(255,0,0); etc.. 上記例なら、A1:C1と設定すれば1回で設定できますが設定する内容がバラバラの場合は 結局セル毎に設定しなければならず時間が掛かってしまいます。 この問題は、文字を設定する際にもぶつかった問題だったのですが文字に関しては COleSafeArrayを使うことによって、瞬時に設定する事ができるようになりました。 同じように2次元配列の中に各セルの設定を入れておき、それを指定したセルの 設定項目に渡せば、文字列と同じ感じで書式設定も一度に設定できるのではないかと考えました。 COleSafeArray sa; DWORD numElements[] = {0, 0}; // 行数・列数 numElements[0] = lMaxRow; // 行数 numElements[1] = lMaxCol; // 列数 sa.Create(VT_R4, 2, numElements); // <-- CreateするときのVT_R4の値が怪しい for(long lCol=0L; lCol < lMaxCol; lCol++){ for(long lRow=0L; lRow < lMaxRow; lRow++){ numElements[0] = lRow; numElements[1] = lCol; long color = (long)RGB(255,0,0); sa.PutElement((long*)numElements, &color); } } sheet->Range["A1:H10"][vtMissing]->Font->Color=sa; しかし、やはり設定は反映されません。 COleSafeArrayをFont->Colorなどに渡す事がそもそも無理な話だとは思っていたのですが 先に書いたように、コンパイルエラーにもアプリケーションエラーにもならないので 設定ミスなのかな〜と思って質問した次第です。 この方法で、書式設定ができれば劇的に速くなるはずなので、まだ諦めきれずに頑張ってます(汗 何か情報がありましたら、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.