VBA copia una hoja de trabajo de gráfico de una plantilla

VBA copia una hoja de trabajo de gráfico de una plantilla

Tengo un gráfico de hoja de trabajo que quiero usar como plantilla en una macro. Estoy intentando copiar la hoja y asignarla a un objeto de tipo gráfico pero no logro que funcione.

A continuación, en el código, hay dos líneas de código de trabajo para crear o copiar una hoja de gráfico.

El problema viene de la última línea de código. Copia la hoja pero luego genera errores antes de pasar a la siguiente línea (se requiere el objeto de error 424).

¿Alguien puede explicar por qué sucede esto y una solución para asignar la hoja en una línea?

En este momento mi solución es copiar la plantilla y luego configurar WS_chart3 en la hoja activa, simplemente no me gustan las referencias a la hoja activa si puedo evitarlas.

Sub test()

Dim WS_chart2 As Chart
Dim WS_chart3 As Chart

    'adds chart sheet but doesn't use a template
    Set WS_chart2 = Charts.Add(After:=Sheets(Sheets.Count))

    'adds sheet but doesn't asign in to variable WS_chart2
    Sheets("template").Copy After:=Sheets(Sheets.Count)

    'adds chart sheet but then errors out
    Set WS_chart3 = Sheets("template").Copy(After:=Sheets(Sheets.Count))

End Sub

Respuesta1

Un problema seguro es que el método Copiar no devuelve un objeto (no devuelve nada), por lo que primero debes hacer la copia y luego obtener la nueva hoja y asignarla a la variable.

Creo que puedes hacer

Dim SheetBeforeChart3 As Long

SheetBeforeChart3 = Sheets.Count
Sheets("template").Copy After:=Sheets(SheetBeforeChart3)

Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)

Realmente no conozco Excel VBA, puede haber otros problemas, espero que esto te ayude un poco de todos modos.

información relacionada