Excel.XlColorIndex
はRGB値ではなく、標準カラーパレットのインデックス値で持っています。インデックス値をRGB値に変換してみました。
Public Function ColorIndexToRGB(ByVal xlColorIndex As Integer) As Integer() Dim ht As New Hashtable ' ↓↓左からR、G、B値 ht.Add(1, New Integer() {&HFF, &H0, &H0, &H0 }) ht.Add(2, New Integer() {&HFF, &HFF, &HFF, &HFF}) ht.Add(3, New Integer() {&HFF, &HFF, &H0, &H0 }) ht.Add(4, New Integer() {&HFF, &H0, &HFF, &H0 }) ht.Add(5, New Integer() {&HFF, &H0, &H0, &HFF}) ht.Add(6, New Integer() {&HFF, &HFF, &HFF, &H0 }) ht.Add(7, New Integer() {&HFF, &HFF, &H0, &HFF}) ht.Add(8, New Integer() {&HFF, &H0, &HFF, &HFF}) ht.Add(9, New Integer() {&HFF, &H80, &H0, &H0 }) ht.Add(10, New Integer() {&HFF, &H0, &H80, &H0 }) ht.Add(11, New Integer() {&HFF, &H0, &H0, &H80}) ht.Add(12, New Integer() {&HFF, &H80, &H80, &H0 }) ht.Add(13, New Integer() {&HFF, &H80, &H0, &H80}) ht.Add(14, New Integer() {&HFF, &H0, &H80, &H80}) ht.Add(15, New Integer() {&HFF, &HC0, &HC0, &HC0}) ht.Add(16, New Integer() {&HFF, &H80, &H80, &H80}) ht.Add(33, New Integer() {&HFF, &H0, &HCC, &HFF}) ht.Add(34, New Integer() {&HFF, &HCC, &HFF, &HFF}) ht.Add(35, New Integer() {&HFF, &HCC, &HFF, &HCC}) ht.Add(36, New Integer() {&HFF, &HFF, &HFF, &H99}) ht.Add(37, New Integer() {&HFF, &H99, &HCC, &HFF}) ht.Add(38, New Integer() {&HFF, &HFF, &H99, &HCC}) ht.Add(39, New Integer() {&HFF, &HCC, &H99, &HFF}) ht.Add(40, New Integer() {&HFF, &HFF, &HCC, &H99}) ht.Add(41, New Integer() {&HFF, &H33, &H66, &HFF}) ht.Add(42, New Integer() {&HFF, &H33, &HCC, &HCC}) ht.Add(43, New Integer() {&HFF, &H99, &HCC, &H0 }) ht.Add(44, New Integer() {&HFF, &HFF, &HCC, &H0 }) ht.Add(45, New Integer() {&HFF, &HFF, &H99, &H0 }) ht.Add(46, New Integer() {&HFF, &HFF, &H66, &H0 }) ht.Add(47, New Integer() {&HFF, &H66, &H66, &H99}) ht.Add(48, New Integer() {&HFF, &H96, &H96, &H96}) ht.Add(49, New Integer() {&HFF, &H0, &H33, &H66}) ht.Add(50, New Integer() {&HFF, &H33, &H99, &H66}) ht.Add(51, New Integer() {&HFF, &H0, &H33, &H0 }) ht.Add(52, New Integer() {&HFF, &H33, &H33, &H0 }) ht.Add(53, New Integer() {&HFF, &H99, &H33, &H0 }) ht.Add(54, New Integer() {&HFF, &H99, &H33, &H66}) ht.Add(55, New Integer() {&HFF, &H33, &H33, &H99}) ht.Add(56, New Integer() {&HFF, &H33, &H33, &H33}) Return ht(xlColorIndex) End Function
xlColorIndexAutomaticは-4105
、xlColorIndexNoneは-4142
なのですが、これらに関しては変換していません。でも標準カラーパレットの色が変わったらどうしようかなぁ……
別の方法で取得する事を考えなきゃ。