/ / VBA код, за да пресече и компилира конкретни листове от множество работни книги - excel, vba, excel-vba

VBA кода да претърсва и компилира специфични листове от множество работни книги - excel, vba, excel-vba

Имам папка с ~ 20 работни книги, които всички иматразлични имена на файлове и трябва да открия отделен работен лист от всяка работна книга в една основна работна книга. Не съм запознат с VBA, но се надявах, че някой може да превърне моя псевдокод в работещ скрипт VBA за Excel.

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

Работните книги са изключително големи с 50+листа / книга, така че ако мога да ги отворя без активиране, което ще ускори процеса доста. Специфичният работен лист, който се опитвам да извлека, има едно и също име във всички работни книги, въпреки че не съм много сигурен в индекса.

Бонус точките биха били, ако скриптът може да копираклетките от работния лист до следващия празен ред на основната книга, така че всички данни от целевата таблица от 20 работни книги да бъдат съставени в 1 работен лист на Главната книга.

Отговори:

0 за отговор № 1

Ако имате специално предпочитание за това с VBA, помислете за използването на Scripting.FileSystemObject (добавете препратка към Време за изпълнение на Microsoft Scripting чрез Инструменти -> Референции ...):

"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