2010-07-30 13 views
6

Potrzebuję napisać makro w VBA, które otworzy każdy plik w danym katalogu jeden po drugim i uruchomić makro na nich.Jak mogę otworzyć WSZYSTKIE pliki Excela jeden po drugim i uruchomić makro

tej pory mam coś takiego

for i = 1 to number_of_files 
    open Dir("C:\yourPath\*.*", vbNormal) 
    call some_macro 
    close file 
next i 
+3

Czy zaczęło? Jaki masz kod do tej pory? Czy makro znajduje się w każdym skoroszycie, czy próbujesz wykonać makro w jednym skoroszycie na tle innych? – Jay

+0

makro jest tylko w JEDNYM skoroszycie –

Odpowiedz

11

Wywołując funkcję Dir() z odpowiednim filtrem, takie jak "c:\folder\*.xls", zacząć wyliczanie i zdobyć pierwszy nazwę pliku.
Po tym, wielokrotnie wywołując funkcję Dir() bez żadnych parametrów, otrzymasz wszystkie nazwy plików *.xls, po jednym dla każdego połączenia.

Otworzysz skoroszyt, dzwoniąc pod numer Workbooks.Open(full_path). To daje obiekt Workbook, na którym można uruchomić makro.

Metoda .Close() obiektu zamyka skoroszyt. Możesz użyć .Close(SaveChanges:=True), aby zapisać zmiany, .Close(SaveChanges:=False), aby odrzucić zmiany, lub pomiń parametr, aby użytkownik zdecydował.

+0

w jaki sposób mogę zamknąć plik? –

+1

Wywołując '.Close()'. – GSerg

-2

Oto proste VBA przedmiot sposób to zrobić:

Dim fs As FileSearch 
Dim i As Integer 
Dim wbk As Workbook 

Set fs = Application.FileSearch 

With fs 
    .LookIn = ThisWorkbook.Path 
    .FileName = "*.xls" 
    For i = 1 to .Execute() 
     Set wbk = Workbooks.Open(.FoundFiles(i)) 
     ''//RUN MACRO HERE 
     wbk.Close(SaveChanges:=True) 
    Next i 
End With 
+2

Działa to tylko w programie Excel 2003 i starszych wersjach. – Patrick

Powiązane problemy