2012-08-13 18 views
8

Estoy tratando de crear un botón que exportaría un gráfico en la hoja "Gráficos" como un archivo jpeg. Este es el código que tengo, sin embargo, sigue mostrando este error:Exportar gráfico como imagen - con un clic en un botón

runtime error 424: object required

Específicamente para esto:

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

Y aquí está el código

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 

Gracias a todos!

Respuesta

18

¿Esto es lo que estás intentando?

Además, si está tratando de guardarlo como jpg, ¿por qué un filtro png? Cambié "myChart.jpg" a "myChart.png". Cambiar según corresponda.

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

¡Eres demasiado rápido! Una nota para el OP, que está incorporada en la respuesta de Siddharth, es agregar On Error GoTo 0 tan pronto como sea posible en su código, o enmascarará los errores. En este caso, necesitabas ChartObject's Chart Object :) que siempre es confuso. –

+0

Estoy tratando de compensar los últimos días de inactividad: D –

+0

Wow eso es excelente. ¡Gracias! – pufAmuf

1

Gracias, necesitaba esto para extraer todos los cuadros en una imagen y es casi medianoche. Pequeños cambios en el código anterior hicieron el truco.

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 
Cuestiones relacionadas