我需要在VBA中編寫一個宏,它將逐個打開給定目錄中的每個文件,並在它們上運行一個宏。我該如何打開所有的excel文件並運行一個宏
到目前爲止,我還像
for i = 1 to number_of_files
open Dir("C:\yourPath\*.*", vbNormal)
call some_macro
close file
next i
我需要在VBA中編寫一個宏,它將逐個打開給定目錄中的每個文件,並在它們上運行一個宏。我該如何打開所有的excel文件並運行一個宏
到目前爲止,我還像
for i = 1 to number_of_files
open Dir("C:\yourPath\*.*", vbNormal)
call some_macro
close file
next i
通過調用Dir()
功能與適當的過濾器,如"c:\folder\*.xls"
,你開始計數並獲得的第一個文件名。
之後,不帶任何參數反覆調用Dir()
函數,您將獲得所有*.xls
文件名,每個調用一個。
您可致電Workbooks.Open(full_path)
打開工作簿。這給你一個Workbook
對象,你可以運行一個宏。
Workbook
對象的.Close()
方法關閉工作簿。您可以使用.Close(SaveChanges:=True)
保存更改,.Close(SaveChanges:=False)
放棄更改,或者省略用戶決定的參數。
如何關閉該文件? – 2010-07-30 20:49:24
通過調用'.Close()'。 – GSerg 2010-07-30 21:03:29
下面是簡單的VBA對象的方式來做到這一點:
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
這僅適用於Excel 2003及更低版本。 – Patrick 2012-06-29 16:29:16
你開始了嗎?你目前有什麼代碼?宏是否駐留在每個工作簿中,還是您試圖在一個工作簿中針對其他人執行宏? – Jay 2010-07-30 20:36:10
該宏只在ONE工作簿中 – 2010-07-30 20:37:16