у меня есть рабочая книга под названием "тест". Я хочу скопировать все листы в рабочей книге под названием "оценка" для проверки. я не знаю, как создать список листов по "смете", которые можно скопировать в "тест". Есть ли способ сделать это в VBA?
2 ответа
2
Рассматривать:
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
0
Это перечислит их
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
И это должно скопировать их, если они оба открыты
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
И если вам нужно открыть тестовую копию перед копированием листов, сделайте это следующим образом:
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