veces varias una para otro otra nuevo nombre macro libro hojas hoja especificas datos copiar con como celdas cambiar templates vba excel-vba excel

templates - varias - macro para cambiar nombre de hojas excel



¿Cómo copiar hojas a otro libro usando vba? (8)

Entonces, lo que quiero hacer, en general, es hacer una copia de un libro de trabajo. Sin embargo, el libro de trabajo de origen ejecuta mis macros, y quiero que haga una copia idéntica de sí mismo, pero sin las macros. Siento que debería haber una forma sencilla de hacer esto con VBA, pero aún no lo he encontrado. Estoy considerando copiar las hojas una por una al nuevo libro de trabajo, que crearé. ¿Cómo haría esto? ¿Hay alguna manera mejor?


Alguien en Ozgrid respondió una pregunta similar. Básicamente, simplemente copie cada hoja de una en una desde Workbook1 a Workbook2.

Sub CopyWorkbook() Dim currentSheet as Worksheet Dim sheetIndex as Integer sheetIndex = 1 For Each currentSheet in Worksheets Windows("SOURCE WORKBOOK").Activate currentSheet.Select currentSheet.Copy Before:=Workbooks("TARGET WORKBOOK").Sheets(sheetIndex) sheetIndex = sheetIndex + 1 Next currentSheet End Sub

Descargo de responsabilidad: no he probado este código y en su lugar simplemente adopté el ejemplo vinculado a su problema. Si nada más, debería llevarlo hacia su solución intencionada.


Intenta esto en su lugar.

Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Copy Next


Me gustaría reescribir un poco la respuesta de keytarhero:

Sub CopyWorkbook() Dim sh as Worksheet, wb as workbook Set wb = workbooks("Target workbook") For Each sh in workbooks("source workbook").Worksheets sh.Copy After:=wb.Sheets(wb.sheets.count) Next sh End Sub

Editar: También puede crear una matriz de nombres de hojas y copiarlos a la vez.

Workbooks("source workbook").Worksheets(Array("sheet1","sheet2")).Copy _ After:=wb.Sheets(wb.sheets.count)

Nota : copiar una hoja de un XLS? a un XLS dará lugar a un error. Lo opuesto funciona bien (XLS a XLSX)


Podrías guardar como Xlsx. Luego perderá las macros y generará un nuevo libro de trabajo con un poco menos de trabajo.

ThisWorkbook.saveas Filename:=NewFileNameWithPath, Format:=xlOpenXMLWorkbook


Pude copiar todas las hojas de un libro de trabajo que tenía una aplicación vba en ejecución, en un nuevo libro de trabajo sin macros de la aplicación, con:

ActiveWorkbook.Sheets.Copy


Simplemente puedes escribir

Worksheets.Copy

en lugar de correr un ciclo. Por defecto, la colección de hojas de trabajo se reproduce en un nuevo libro.

Está comprobado que funciona en la versión 2010 de XL.


Suponiendo que todas sus macros están en módulos, tal vez este enlace ayude. Después de copiar el libro, simplemente itere sobre cada módulo y elimínelo


Workbooks.Open Filename:="Path(Ex: C:/Reports/ClientWiseReport.xls)"ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet