Buscar

jueves, 26 de junio de 2008

Copiar hojas de Excel con macros (VBA)

Este código copia una hoja de Excel a otro documento de Excel.
Este código nos resulto muy útil, cuando teníamos que generar reportes en Excel con macros, nosotros generábamos el reporte y copiábamos las hojas en otro Excel para que el usuario trabajara con el

Sub CopiarHoja(Hoja As Integer)
Dim AppExceldestino As Object
Set AppExceldestino = New Excel.Application
AppExceldestino.Workbooks.Add
AppExceldestino.Workbooks(1).Activate
Dim i As Integer
Application.CutCopyMode = False
For i = 1 To Hoja
ActiveWorkbook.Sheets(i).Activate
AppExceldestino.Sheets(i).Select
ActiveWorkbook.ActiveSheet.Range("A1:A1").Select 'se para en la primera fila
ActiveWorkbook.ActiveSheet.Range("A1:U65").Select 'se selecciona el rango de la hoja a copiar
ActiveWorkbook.ActiveSheet.Application.CutCopyMode = False
Selection.Copy 'se copia el rango selecionado
'Abro el destino y pego su contenido
AppExceldestino.ActiveWorkbook.ActiveSheet.Cells(1, 1).Select 'Selecciono la primera linea del documento nuevo
AppExceldestino.ActiveWorkbook.ActiveSheet.Paste 'Lo pego
ActiveSheet.Select
Selection.Copy
AppExceldestino.ActiveSheet.Paste
AppExceldestino.Visible = True
Next

AppExceldestino.Sheets(3).Delete
AppExceldestino.Sheets(1).Activate
AppExceldestino.ActiveWorkbook.SaveAs Filename:="Ruta", FileFormat:=xlNormal, _
Password
:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False 'Se guarda el archivo con el nombre "Ruta"
AppExceldestino.Workbooks.Close
' Se cierra
ActiveWorkbook.Sheets(1).ActivateActiveWorkbook.Activate

End Sub

No hay comentarios:

Publicar un comentario