excel - como copiar todas as folhas de uma pasta de trabalho para outra

1

Eu tenho uma pasta de trabalho chamada "teste". Eu quero copiar todas as folhas em uma pasta de trabalho chamada "estimativa" para testar. Eu não sei como criar a lista de folhas em "estimativa" que pode ser copiado para "teste". Existe uma maneira de fazer isso no VBA?

    
por DanM 09.12.2015 / 18:53

2 respostas

2

Considere:

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
    
por 09.12.2015 / 19:28
0

Isto irá listá-los

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

E isso deve ser copiado se ambos estiverem abertos

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

E se você precisar abrir o teste antes de copiar as folhas, faça assim:

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
    
por 09.12.2015 / 19:20