我正在将Excel中的邮件合并到Word中,我需要复制某些单元格的背景颜色以及内容。
在这里,我已经了解到我可以添加辅助列,并插入一个自定义函数(类似Selection.Interior.Color)来检测所需单元格的代码。我将邮件合并秘密地传递给Word,其中宏将看到它并使用它来着色相应的表格单元格。
不幸的是,Selection.Interior.Color只检测单元格的自然底层颜色,而不是条件格式的颜色。
有没有办法检测条件格式分配的颜色?
(有35个不同的列使用至少8组不同的条件规则)。
结论:这些解决方案似乎有效,但我决定避免在Excel表格中添加数据或宏。相反,我在Word中放置一个基本上复制条件格式功能的宏。它很慢,但我认为它最终更清洁。
谢谢大家。
答案 0 :(得分:1)
正如@David所说,这似乎很痛苦。但是,如果条件格式仅包含"传统"标准的excel颜色(见here),以下似乎做出了适当的反应(没有经过详尽的测试)。列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
答案 1 :(得分:1)
这是一个例程,它将displayformat.interior.color代码放在被测试列旁边的“辅助列”中。我还添加了一列来显示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的方式,您甚至可能不需要在工作表上使用它。