Я хотел бы сделать это следующим образом:
Sub Button1_Click()
Dim source_worksheet As Worksheet
Dim source_workbook As Workbook
Dim target_workbook As Workbook
Set source_workbook = ActiveWorkbook
Set target_workbook = Workbooks.Add()
Set source_worksheet = source_workbook.Sheets("needtocopy")
source_worksheet.Copy Before:=target_workbook.Sheets(1)
End Sub
Этот фрагмент кода немного многословным, но цель состоит в том, чтобы дать вам представление о том, где что-то происходит.
Выбор целевой рабочей книги выполняется в строке Set target_workbook. Здесь вы можете создать новую книгу (например, я делаю это в этом примере) или открыть существующую книгу.
Чтобы открыть существующее место книги, замените набор target_workbook грести с этим:
Set target_workbook = Workbooks.Open("target.xls")
В конце концов, вы можете добавить некоторые сохранения и закрытия функции, а также:
target_workbook.Save
target_workbook.Close
Чтобы получить список файлов в папке, которую необходимо определить для объекта с Dir (как описано в этом сообщении: Loop through files in a folder using VBA?):
Sub Button1_Click()
Dim source_worksheet As Worksheet
Dim source_workbook As Workbook
Dim target_workbook As Workbook
Set source_workbook = ActiveWorkbook
Set source_worksheet = source_workbook.Sheets("needtocopy")
Dim file As Variant
Dim folder As String
folder = "C:\test\"
file = Dir(folder)
Application.DisplayAlerts = False
While (file <> "")
If InStr(file, "Allocation") <> 0 Then
Set target_workbook = Workbooks.Open(folder & file)
source_worksheet.Copy Before:=target_workbook.Sheets(1)
target_workbook.Save
target_workbook.Close
End If
file = Dir
Wend
Application.DisplayAlerts = True
End Sub
Какие проблемы \ проблемы вы сталкиваетесь с кодом? – user3598756