プロが教えるわが家の防犯対策術!

こんにちは、VB2008を使用しています。
TextBoxにExcel内の文字と、その文字が入っているセルの背景色を取得しようとしています。文字の取得は
TextBox1.Text = sheet.Range("A1").Value
で出来るのですが、背景色の取得は
TextBox1.BackColor =
の = 以降がわかりません。どなたか教えて頂けなしでしょうか?

A 回答 (7件)

文字の色


sheet.Range("A1").Font.ColorIndex
セルの背景色
sheet.Range("A1").Interior.ColorIndex

この回答への補足

皆さん、早々に回答を頂きありがとうございます。
下記のようにしましたが、TextBox1の背景色が変わらず「指定されたキャストは有効ではありません。」とエラーが表示されてしまいます。
どこか間違いがあるのでしょうか?

'Form1を開くとexcelを取得
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load

Dim excel As New Microsoft.Office.Interop.Excel.Application

Dim book As Microsoft.Office.Interop.Excel.Workbook

book = excel.Workbooks.Open("C:\test.xls")

Dim sheet As Microsoft.Office.Interop.Excel.Worksheet

sheet = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet)

'TextBox1にA1の文字を表示
TextBox1.Text = sheet.Range("A1").Value
ここまでは問題なく作動します。

'TextBox1にA1の背景色を表示
TextBox1.BackColor = sheet.Range("A1").Interior.ColorIndex()
ここでエラーになってしまいます。

補足日時:2009/09/04 18:45
    • good
    • 0

こんにちは。



Range("A1").Interior.ColorIndex でどうでしょうか。

ちなみにこのような書式に関することは、エクセルの「マクロの記録」を使用し、書式を設定するマクロを記録してみれば分かると思います。
    • good
    • 0

補足


ColorIndexは1-51の整数値です。
何番が何色かわ、その人のカラーパレッドの順番だから
厳密には分からないようです。
    • good
    • 0

確認していませんが…


 sheet.Range("A1").Interior.Color とか
 sheet.Range("A1").Interior.ColorIndex
ではダメでしょうか?

前者はRGB関数による色値、後者はカラーテーブル上の番号
    • good
    • 0

No.4さんの書いているように”色値”でとらないと


単なる数値になってしまいます。
sheet.Range("A1").Interior.Color

この回答への補足

何度も申し訳ありません。
ExcelのA1を黄色にすると、TextBoxも黄色で表示したいのですが、
sheet.Range("A1").Interior.Color=RGB(0,255,0)とか
sheet.Range("A1").Interior.ColorIndex=6
にしてもエラーになってなってしまいます。

補足日時:2009/09/04 19:59
    • good
    • 0

sheet.Range("A1").Interior.Colorもだめですね。


思ったより難しいですね。
これはRGBを10進数で返すだけですね。
まず16進素に直してRGB要素を分ける必要があります。
一方TextBox1.BackColor =に指定する色は、
colorオブジェクトを継承して、RGBから自分で作る必要がありそうです。
Dim mycolor As Color
mycolor.G = g
.....
    • good
    • 0

よくしらべてみました。


それ用のVB2008にクラスが用意されてました。
TextBox1.BackColor = ColorTranslator.FromWin32(sheet.Range("A1").Interior.Color)
です。
    • good
    • 0
この回答へのお礼

ありがとうございます、無事解決いたしました。何回も回答を頂き本当にありがとうございます。

お礼日時:2009/09/04 20:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!