2010-07-30 23 views
6

Ho bisogno di scrivere una macro in VBA che aprirà uno per uno ogni file in una determinata directory ed eseguirà una macro su di essi.come faccio ad aprire TUTTI i file excel uno per uno ed eseguire una macro

finora ho qualcosa di simile

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

Hai iniziato? Che codice hai finora? La macro si trova in ogni cartella di lavoro o stai tentando di eseguire una macro in una cartella di lavoro contro altre? – Jay

+0

la macro è solo nella cartella di lavoro ONE –

risposta

11

chiamando la funzione Dir() con un filtro appropriato, ad esempio "c:\folder\*.xls", si inizia l'enumerazione e ottiene il primo nome di file.
Successivamente, chiamando ripetutamente la funzione Dir() senza parametri, otterrete tutti i nomi di file *.xls, uno per ogni chiamata.

Si apre una cartella di lavoro chiamando lo Workbooks.Open(full_path). Questo ti dà un oggetto Workbook, contro il quale è possibile eseguire una macro.

Il metodo .Close() di questo oggetto Workbook chiude la cartella di lavoro. È possibile utilizzare .Close(SaveChanges:=True) per salvare le modifiche, .Close(SaveChanges:=False) per annullare le modifiche o omettere il parametro per consentire all'utente di decidere.

+0

come chiuderei il file? –

+1

Chiamando '.Close()'. – GSerg

-2

Ecco l'oggetto facile modo VBA per farlo:

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

Funziona solo con Excel 2003 e versioni successive. – Patrick

Problemi correlati