我的一些单元格格式为#,##0;[Red](#,##0)
,这使得负数显示为红色。我想将内容和格式复制到PowerPoint中。如何识别单元格显示的颜色,以便复制可见外观?我不想重新实现解析格式和做出否定决定的逻辑,如果我不必这样做,因为并非我的所有单元格都会以这种格式进行格式化。
如果我无法通过在VBA中明确设置颜色来执行此操作,是否可以使用复制和粘贴方法将Excel中的单元格复制到PowerPoint中的表格中?实际上这比做手写更好 - 我已经尝试了但是我可以在什么对象嵌套级别上进行粘贴。
我发现有很多关于如何将Excel范围粘贴到新表中的参考文献,但没有找到将格式化为现有PowerPoint表格的单个单元格。在TextRange级别粘贴不粘贴颜色,但它会粘贴其他设置,如粗体。
答案 0 :(得分:1)
是否可以使用复制和粘贴方法将Excel中的单元格复制到PowerPoint中的表格中?
我认为史蒂夫的建议并不像你所做的那样适用于自定义数字格式。无论如何,当我查询该单元格的.Font.ColorIndex
属性(例如)时,返回值为1
,即使该数字为负数且显示红色,收益率3
。
如果不解析格式条件,我不确定这是否可行。无论我尝试过什么,数字格式规则似乎都不会转移到PowerPoint。
然而,这可能是一个可接受的解决方案。将您的数字格式更改为:
#,##0;(#,##0)
然后,如果值为负,则应用条件格式规则以使单元格的文本为红色,而不是使用自定义格式来执行颜色。
针对单个细胞范围给出的示例:
Sub Test()
Dim r As Range
Dim ppt As Object
Dim pres As Object
Dim sld As Object
Dim tbl As Object
Dim tblCell As Object
Set r = [A3]
Set ppt = CreateObject("PowerPoint.Application")
Set pres = ppt.Presentations.Open("c:\presentation.pptx")
Set sld = pres.Slides(1)
Set tbl = sld.Shapes(1) 'Table in PowerPoint
Set tblCell = tbl.Table.Cell(1, 1).Shape 'Cell/shape you paste in to
r.Copy
tblCell.Select
ppt.CommandBars.ExecuteMso "PasteSourceFormatting"
End Sub
或者,将单元格的颜色强制为红色:
Set r = [A3]
If r.Value < 0 Then
r.Font.ColorIndex = 3
Else
r.Font.ColorIndex = 1
End If