如果我在调试模式但我没有在运行时,我的代码才有效,为什么?

时间:2018-04-12 15:34:23

标签: excel vba

我正在尝试将Excel范围导出为图片,因此,我使用以下代码

Set Sheet = Worksheets("Test")

zoom_coef = 100 / Sheet.Parent.Windows(1).Zoom
Set area = Sheet.Range(Sheet.PageSetup.PrintArea)
area.CopyPicture xlPrinter
Set chartobj = Sheet.ChartObjects.Add(0, 0, area.Width * zoom_coef, area.Height * zoom_coef)
Sheet.ChartObjects(1).Activate
chartobj.Chart.Paste
chartobj.Chart.Export "C:\Test.png", "png"
chartobj.Delete

这在我调试时工作正常,但是当我运行它时,图像没有粘贴到图表中,我得到一个空白的白色图像

我已经尝试过把Application.Wait,Loop但没有运气 请有人帮帮我

1 个答案:

答案 0 :(得分:0)

这对我很有用。 你的Sheet.PageSetup.PrintArea是什么?我已将其替换为硬编码范围。

Sub TestMe()

    Dim SHeet As Worksheet
    Set SHeet = Worksheets(1)        
    zoom_coef = 100 / SHeet.Parent.Windows(1).Zoom
    Set area = SHeet.Range("A1:A6")
    area.CopyPicture xlPrinter
    Set chartobj = SHeet.ChartObjects.Add(0, 0, area.Width * zoom_coef, area.Height * zoom_coef)
    SHeet.ChartObjects(1).Activate
    chartobj.Chart.Paste
    chartobj.Chart.Export "C:\path\file.png", "png"
    chartobj.Delete

End Sub