- PR -

Microsoft Excel 9.0 Object Libraryについて、お教えください。

投稿者投稿内容
未記入
会議室デビュー日: 2003/09/08
投稿数: 15
投稿日時: 2005-07-28 20:10
こんにちは、いつもお世話になっております。

今回件名の通り、Excel.Objectについて、完全に詰まってしまったので、
ご質問させていただきたいと思います。


現在Excelの内容をWebにマップする様な事をしていて、
ExcelのCellのTextや、高さ/幅などは取れました。

ですが、Cellのバックカラーも取得したいのですが、
取得方法がわかりません。

色々と調べては見たのですが、それらしい情報が見つからず・・・。


現在のソースコードはこんな感じです。

(環境:C#.NET/windowsXP/VS.NET2003)
コード:

Excel.Workbook wb =
exl.Workbooks.Open(@"c:\A15S座席表041015.xls",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Excel.Worksheet ws = (Excel.Worksheet)exl.Sheets[0];

Excel.Range ran = (Excel.Range)exl.Cells[1,1];
ここで、取得されているCellのバックカラーを取得したい。



Rangeの中にあるのかなーと思い、VS.NETのデバッグで確認したのですが、
それらしい情報を積んでもいないので、お手上げ状態になってしまいました・・。

どうかよろしくお願いいたします。

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-07-28 20:11 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-07-28 20:13 ]
nak2k
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 86
投稿日時: 2005-07-28 21:04
Excel上でセルに色を設定する操作をマクロ記録させると以下のコードが記録されました。

コード:
With Selection.Interior
    .ColorIndex = 44
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
End With



ColorIndexプロパティのヘルプをみると関連でColor、Colors、PatternColorなどがありますが、それらが使えませんか?
未記入
会議室デビュー日: 2003/09/08
投稿数: 15
投稿日時: 2005-07-28 21:42
nak2kさま、返信有難うございます。

Excel.RangeのプロパティにColorIndexが存在しないようです・・・。
Excel.Range.Font.ColorIndexが存在したので、そちらで確認したのですが、
違うように思えます。
真っ赤を指定したのに、0xbになってたりします。

ちなみに、
>ColorIndexプロパティのヘルプをみると関連
とはどちらのヘルプを参照されているのでしょうか?

私が見ているヘルプは
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/dv_wrcore/html/wrgrfexcelworksheetobject.asp
になります。
nak2k
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 86
投稿日時: 2005-07-29 00:20
う……、説明に手を抜きすぎました^^;
私が見ていたヘルプはExcelVBAのヘルプです。

(Excel.Applicationのプロパティである)Selectionは「現在選択しているセルをあらわすRangeオブジェクト」です。
なのでマクロで記録されたコードより、「RangeオブジェクトのInteriorプロパティ」の中にColorIndexプロパティがあることがわかります。(Interiorプロパティの型はInteriorクラスです)

ExcelVBA上のオブジェクトブラウザで確認してみましたが、InteriorクラスにはColorプロパティもありますね。ExcelVBAのヘルプを見る限りではColorプロパティはVariant型でRGBを示す32bit整数値が入ってるようです。
C#的にはintが入ってるobject型ってところでしょうか……?(←未確認です)
未記入
会議室デビュー日: 2003/09/08
投稿数: 15
投稿日時: 2005-07-29 14:26
nak2k様

有難うございます。
それっぽい情報が入ってました。

その色をWindowsFormのDataGridを使って再現しようとしてたのですが、
Cellの色を指定する部分で詰まってしまいました。。。。

そちらもあわせて出来上がりましたら報告させていただきます。
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2005-07-29 14:48
引用:

未記入さんの書き込み (2005-07-29 14:26) より:
その色をWindowsFormのDataGridを使って再現しようとしてたのですが、


Excelのセルの色は、2色の色を市松模様にできたりも可能なので、
完全再現は難しいと思います。

.Interior.Patternプロパティ
.Interior.PatternColorIndexプロパティ
これらを無視するのであれば、
単純に、Excelからの色の変換テーブルを作ればOKでしょう。
未記入
会議室デビュー日: 2003/09/08
投稿数: 15
投稿日時: 2005-07-29 15:03
おおお、
VIM様。有難うございます。

私が詰まっているのはですね。

DataGridでセル単位に色を設定する方法がわからないのです。。。
列単位だったり、セルの値によって色を付けるような方法は
見つかったのですが、
セルの値に関係なく、色を設定する方法がわかりません。

別スレッドにすべき内容な気もしますが、
もし方法を知っていましたら、お教えいただきたいです。

よろしくお願いいたします。
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2005-07-29 15:48
引用:

未記入さんの書き込み (2005-07-29 15:03) より:

私が詰まっているのはですね。
DataGridでセル単位に色を設定する方法がわからないのです。。。



[DataGrid内の特定のセルの色を変える]
http://dobon.net/vb/dotnet/datagrid/coloredcell.html

検索してすぐに出てくる内容ですが、
こういうのじゃなくって?

スキルアップ/キャリアアップ(JOB@IT)