2012-08-13 43 views
8

我正在尝试创建一个按钮,将图表“图形”中的图表导出为jpeg文件。这是我的代码,但它不断显示此错误:将图表导出为图像 - 点击一个按钮

runtime error 424: object required

专门为此:

Set myChart = Graphs.ChartObjects(3).Name = "Chart4" 

而这里的代码

Sub ExportChart() 
    Dim myChart As Chart 
    Dim myFileName As String 
    Set myChart = Graphs.ChartObjects(3).Name = "Chart4" 
    myFileName = "myChart.jpg" 
    On Error Resume Next 
    Kill ThisWorkbook.Path & "\" & myFileName 
    myChart.Export Filename:=ThisWorkbook.Path & "\" & myFileName, Filtername:="PNG" 
    MsgBox "OK" 
    Set myChart = Nothing 
End Sub 

谢谢大家!

回答

18

这是你正在尝试?

此外,如果你试图把它保存为jpg,那么为什么一个PNG过滤器?我已将“myChart.jpg”更改为“myChart.png”。按适用情况更改。

Sub ExportChart() 
    Dim objChrt As ChartObject 
    Dim myChart As Chart 

    Set objChrt = Sheets("Graphs").ChartObjects(3) 
    Set myChart = objChrt.Chart 

    myFileName = "myChart.png" 

    On Error Resume Next 
    Kill ThisWorkbook.Path & "\" & myFileName 
    On Error GoTo 0 

    myChart.Export Filename:=ThisWorkbook.Path & "\" & myFileName, Filtername:="PNG" 

    MsgBox "OK" 
End Sub 
+0

你太快了! OP的一个注意事项是,在Siddharth的答案中加入的是尽快在您的代码中添加On Error GoTo 0,否则您将屏蔽错误。在这种情况下,您需要ChartObject的图表对象:),这总是令人困惑。 – 2012-08-13 17:28:09

+0

我正在尝试弥补无活动的最后几天:D – 2012-08-13 17:30:36

+0

哇,这是非常好的。谢谢! – pufAmuf 2012-08-13 17:37:34

1

谢谢,我需要这个提取图像中的所有图表,它几乎是午夜。 对上述代码进行的小修改确实可行。

Sub ExportChart() 
    Dim WS As Excel.Worksheet 
    Dim SaveToDirectory As String 

    Dim objChrt As ChartObject 
    Dim myChart As Chart 

    SaveToDirectory = ActiveWorkbook.Path & "\" 

    For Each WS In ActiveWorkbook.Worksheets 
     WS.Activate 'go there 
     For Each objChrt In WS.ChartObjects 
      objChrt.Activate 
      Set myChart = objChrt.Chart 

      myFileName = SaveToDirectory & WS.Name & "_" & objChrt.Index & ".png" 

      On Error Resume Next 
      Kill SaveToDirectory & WS.Name & Index & ".png" 
      On Error GoTo 0 

      myChart.Export Filename:=myFileName, Filtername:="PNG" 
     Next 
    Next 

    MsgBox "OK" 
End Sub