/ / Kod VBA do przechwytywania i kompilowania określonych arkuszy z wielu skoroszytów - excel, vba, excel-vba

Kod VBA do przechodzenia i kompilowania określonych arkuszy z wielu skoroszytów - excel, vba, excel-vba

Mam folder z ~ 20 skoroszytami, które wszystkie mająróżne nazwy plików i muszę pobrać określony arkusz z każdego skoroszytu do 1 głównego skoroszytu. Nie znam VBA, ale miałem nadzieję, że ktoś może zamienić mój pseudokod w działający skrypt VBA dla Excela.

create wrkbk_names as array
store workbook names in "folder" to wrkbk_names
for each book in wrkbk_names
for each worksheet in book
if worksheet.name = "targetSheet"
copy worksheet("targetSheet") to Mainbook.xlxs

Skoroszyty są bardzo duże z 50+arkusze / książki, więc jeśli mógłbym je otworzyć bez aktywacji, co znacznie przyspieszyłoby proces. Specyficzny arkusz, który próbuję wyodrębnić, ma taką samą nazwę we wszystkich skoroszytach, chociaż nie jestem zbyt pewny co do indeksu.

Dodatkowe punkty byłyby, gdyby skrypt mógł skopiowaćkomórki z arkusza do następnego pustego wiersza Mainbook, tak aby wszystkie dane arkusza docelowego z 20 skoroszytów zostały skompilowane do 1 arkusza podręcznika głównego.

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli masz szczególne preferencje do robienia tego za pomocą VBA, rozważ użycie Scripting.FileSystemObject (dodaj odniesienie do Środowisko wykonawcze skryptów Microsoft przez Narzędzia -> Referencje ...):

"Assuming you are running this within Excel
"otherwise you"ll have to create an Excel instance

"This also assumes that the target workbook is the currently active workbook
"in the Excel instance

Dim mainBook As Workbook
Set mainBook = ActiveWorkbook

Dim fso As New Scripting.FileSystemObject
Dim fle As Scripting.File
Dim book As Workbook
For Each fle In fso.GetFolder("C:folder").Files

"Should probably check here that the file is actually an Excel file

Set book = Workbooks.Open(fle.Path)
Dim wks As Worksheet
For Each wks In book.Worksheets
If wks.Name = "targetSheet" Then
wks.Copy mainBook.Worksheets(1) "copies to the start of the main workbook
End If
Next
book.Close
Next