![excel: cómo copiar todas las hojas de un libro a otro](https://rvso.com/image/1476422/excel%3A%20c%C3%B3mo%20copiar%20todas%20las%20hojas%20de%20un%20libro%20a%20otro.png)
Tengo un libro llamado "prueba". Quiero copiar todas las hojas de un libro llamado "estimación" para realizar la prueba. No sé cómo crear la lista de hojas en "estimación" que se pueden copiar a "prueba". ¿Hay alguna manera de hacer eso en VBA?
Respuesta1
Considerar:
Sub dural()
Dim b1 As Workbook, b2 As Workbook
Dim sh As Worksheet
Workbooks.Open Filename:="C:\TestFolder\test.xls"
Set b1 = ActiveWorkbook
Workbooks.Open Filename:="C:\TestFolder\estimate.xls"
Set b2 = ActiveWorkbook
For Each sh In b2.Sheets
sh.Copy after:=b1.Sheets(b1.Sheets.Count)
Next sh
End Sub
Respuesta2
Esto los enumerará
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wsList As Worksheet
Dim numSheets As Integer
numSheets = wbEstimate.Sheets.Count
Worksheets.Add(After:=Worksheets(numSheets)).Name = "list"
Set wsList = Worksheets("list")
Dim i As Integer
i = 1
For Each Sheet In wbEstimate.Worksheets
wsList.Cells(i, 1) = Sheet.Name
i = i + 1
Next
End Sub
Y esto debería copiarlos.si ambos estan abiertos
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wbTest As Workbook
Set wbTest = Workbooks("test.xlsx")
For Each Sheet In wbEstimate.Sheets
Sheet.Copy after:=wbTest.Sheets(wbTest.Sheets.Count)
Next
End Sub
Y si necesita abrir el de prueba antes de copiar hojas, hágalo así:
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wbTest As Workbook
Set wbTest = Workbooks.Open("C:\Users\path\to\test.xlsx")
For Each Sheet In wbEstimate.Sheets
Sheet.Copy after:=wbTest.Sheets(wbTest.Sheets.Count)
Next
End Sub