Copiar hoja mediante vba excel

Llevo dias dandole vueltas y buscando soluciones al problema que tengo. Intento copiar una hoja excel a otro libro excel cerrado en la red. El codigo es el siguiente:

'abre el fichero en red

Workbooks.Open ( "fichero_red.xlsm")
Windows("archivo_base.xlsm").Activate
Workbooks(RutaFijaRed & RutaArchivoRed & NombreArchivo & ".xlsm").Sheets(3)

Cuando llega aquí me dice:

"Se ha poducido el error 9 en tiempo de ejecución: Subíndice fuera del intervalo"

Si es posible, y aprovechando, me gustaría que siempre se copiase al final de la hoja, ¿cómo lo podría hacer?

1 Respuesta

Respuesta
1

H o l a:

Te anexo una macro para copiar la tercera hoja del libro "fichero_red.xlsm"

Sub CopiarHoja()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    '
    rutared = "\\Damor2\Blog\"
    archivored = "fichero_red.xlsm"
    Set l2 = Workbooks.Open(rutared & archivored)
    l2.Sheets(3).Copy after:=l1.Sheets(l1.Sheets.Count)
    l2.Close False
    Application.ScreenUpdating = True
    MsgBox "Hoja copiada"
End Sub

Lo que hace la macro es abrir el libor "fichero_red.xlsm", que se encuentra en la ruta: "\\Damor2\Blog\", copia la tercera hoja (revisa que el libro de red tenga 3 hojas o más); y la pega después de la última hoja del libro que contiene la macro.


Cambia mis datos de ejemplo por tus datos.


':)
':)

Hola Dante y gracias! Al final conseguí hacer que lo copiase  pero tengo varias dudillas que no se como solventar, espero no ser muy abusivo.

Según tu algoritmo lo copia siempre después de la ultima hoja, pero a mi no me funciona asi. Lo que me hace es por ejemplo:

"hoja1""hoja2""hoja3""Hojacopiada4""Hojacopiada3""Hojacopiada2""Hojacopiada"

No se si me he explicado.

Y por ultimo, quiero salvar la hoja en la que añadido cambios y la plantilla no quiero salvarla, y que cierre completamente Excel sin mostrar mensajes pero me queda la hoja en la que hago la copia abierta y sin salvar. Este es mi código:

"""""""""""""""""""""""""

   Workbooks.Open (RutaFijaRed & RutaArchivoRed & ArchivoRed & ".xlsm")
           Windows("archivobase.xlsm").Activate
           ActiveSheet.Name = NombreHoja
           Worksheets(NombreHoja).Copy After:=Workbooks(ArchivoRed & ".xlsm").Sheets(Sheets.Count)
           Windows(ArchivoRed & ".xlsm").Activate
           ThisWorkbook.Close SaveChanges:=True
           Windows("archivobase.xlsm").Activate
           ActiveWorkbook.Close SaveChanges:=False

           Application.DisplayAlerts = False
           Application.Quit

"""""""""""""""""""""""""""""""""

Perdón por la insistencia y gracias....

H o l a:

Prueba con esto, no entendí muy bien qué quieres guardar y qué no quieres guardar, y qué quieres cerrar.

    Application.DisplayAlerts = False
    Workbooks.Open (RutaFijaRed & RutaArchivoRed & ArchivoRed & ".xlsm")
    Windows("archivobase.xlsm").Activate
    ActiveSheet.Name = NombreHoja
    '
    Set l2 = Workbooks(ArchivoRed & ".xlsm")
    Worksheets(NombreHoja).Copy After:=l2.Sheets(l2.Sheets.Count)
    '
    Windows(ArchivoRed & ".xlsm").Activate
    ActiveWorkbook. Save
    Application. Quit

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas