核心代碼
Sub BatchSaveAll()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim wb As Workbook, fName As String
fName = Dir(ThisWorkbook.Path & "\*.xls*")
Do While fName <> ""
If fName <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & fName, , False)
' 此處可調用個人巨集工作簿中的公共函數
' Application.Run "Personal.xlsb!MyMacro", wb
wb.Save
wb.Close True
End If
fName = Dir
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "處理完成!"
End Sub
關鍵點
Dir 遍歷當前目錄(非遞歸子目錄)。Workbooks.Open(..., , False) 僅讀模式打開,不觸發 Auto_Open 巨集。- 個人巨集工作簿 (
Personal.xlsb) 需預先加載,Application.Run 跨工作簿調用。