检测单元格的条件颜色

我正在做一个从Excel到Word的邮件合并,我需要复制一些单元格的背景颜色以及内容。

在这里,我已经了解到,我可以添加一个帮助列,并插入一个自定义函数(类似Selection.Interior.Color),检测所需的单元格的代码。 我将会把这个代码悄悄地传递给Word,在那里macros将会看到它,并用它来给相应的表单元格着色。

不幸的是,Selection.Interior.Color只能检测单元格的自然底层颜色,而不是条件格式的颜色。

有没有办法检测由条件格式分配的颜色?

(使用至less8组不同的条件规则有35个不同的列)。

结论:这些解决scheme似乎工作,但我决定避免添加数据或macros的Excel表。 相反,我把一个macros在Word中基本上重复的条件格式function。 这很慢,但我认为它最终更清洁。

感谢大家。

正如@大卫所说,这似乎是一个痛苦。 但是,如果条件格式只包含“传统”标准excel颜色(请参见此处 ),则以下内容似乎可以正确响应(未经详尽testing)。 列A(行1到12)包含从1到12的值,条件格式应用于这些单元格。 下面的代码似乎工作,只要颜色是“标准”。

 Sub Button1_Click() For i = 1 To 12 Worksheets("Sheet1").Cells(i, 2) = Worksheets("Sheet1").Cells(i, 1).DisplayFormat.Interior.ColorIndex Next End Sub 

这是一个例程,它将displayformat.interior.color代码放置在被testing列旁边的“帮助列”中。 我还添加了一列来显示RGB值,但只是为了感兴趣。 哦,颜色都是由条件格式生成的。

 Option Explicit Sub GetColor() Dim R As Range, C As Range Set R = Range(Cells(2, 1), Cells(10, 1)) For Each C In R C.Offset(0, 1).Value = C.DisplayFormat.Interior.Color C.Offset(0, 2).Value = converttorgb(C.Offset(0, 1).Value) Next C End Sub Function ConvertToRGB(lColor As Long) As String Dim H As String Dim Red As Integer, Green As Integer, Blue As Integer H = Format(Hex(lColor), "@@@@@@") Red = Val("&H" & Right(H, 2)) Green = Val("&H" & Mid(H, 3, 2)) Blue = Val("&H" & Left(H, 2)) ConvertToRGB = Format(Red, "0\, ") & Format(Green, "0\, ") & Format(Blue, "0") End Function 

在这里输入图像说明

根据您将这些信息传输到Word的方式,您可能甚至不需要在工作表上放置它。