我使用宏来生成发票的图像。我们一直在使用Excel 2013,而且宏观工作完美无瑕。但是,由于我们切换到Excel 2016,宏无法生成有效的图像。它会创建一个空白图像。它甚至不抛出一个错误,这是难以解决的,以及工作excel 2013宏不工作在excel 2016
Sub saveimage()
Set Sheet = ActiveSheet
output = "F:\Invoices\" & Range("e8") & ".png"
zoom_coef = 100/Sheet.Parent.Windows(1).Zoom
Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Set sht = Worksheets("Invoice")
Set StartCell = Range("A1")
'Refresh UsedRange
Worksheets("Invoice").UsedRange
'Find Last Row
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'Select Range
sht.Range("A1:N" & LastRow).Select
Set area = Selection
area.CopyPicture xlPrinter
Set chartobj = Sheet.ChartObjects.Add(0, 0, area.Width * zoom_coef, area.Height * zoom_coef)
chartobj.Chart.Paste
chartobj.Chart.Export output, "png"
chartobj.Delete
End Sub
这可能是问题的原因是什么?
PNG编辑以JPG在2个地方,但仍然得到一个空白的白色图像。 – Ahmed
删除'chartobj.Delete'确实会给出空白图表。得到一个运行时错误“Range类的CopyPicture方法失败”,当我用'area.CopyPicture xlPrinter,xlBitmap'和'area.CopyPicture xlScreen,xlBitmap'替换'area.CopyPicture xlPrinter'时,也会给出空白图像并用gif替换给出一个空白图像 – Ahmed
@艾梅德:我想我终于明白了。对不起,延迟很长。让我知道它现在是否有效。顺便说一句,现在你也可以保持'GIF'格式的'PNG'格式。如果结果如预期那么我建议我们删除所有评论并清理这篇文章以供他人查找和分享。但是你肯定发现了这个Excel 2016中的一个“小故障”。 – Ralph