[英]VBA ACCESS - Loop Excel workbooks
下面的vba打開一個excel工作簿,以檢查其是否處於只讀模式,如果處於等待狀態,則等到讀/寫處於活動狀態,然后運行代碼。 簡單
我的問題是我有很多excel文件,例如C:\\ TEST \\ TEST.xlsb,C:\\ TEST \\ TEST2.xlsb,C:\\ TEST \\ TEST3.xlsb,C:\\ TEST \\ TEST4.xlsb等
如何使VBA通過每個工作簿名稱運行代碼
對於每個工作簿名稱,可以為我節省多次復制/粘貼代碼的時間。
Function test()
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open ("C:\TEST\Test.xlsb")
Do Until xl.ActiveWorkbook.ReadOnly = False
MsgBox ("Workbook in use, waiting till read/write is active")
Call Pause(5)
xl.Quit
xl.Workbooks.Open ("C:\TEST\Test.xlsb")
If xl.ActiveWorkbook.ReadOnly = False Then Exit Do
Loop
If xl.ActiveWorkbook.ReadOnly = False Then
MsgBox ("read/write active")
'Run code
xl.Sheets("Sheet1").Range("G2").Value = 2222
xl.ActiveWorkbook.Save
xl.Quit
End If
xl.Quit
Set xl = Nothing
End Function
您需要一個循環來遍歷文件並為每個文件調用該函數。 如果文件名的模式類似於C:\\ TEST \\ TEST.xlsb,C:\\ TEST \\ TEST2.xlsb,C:\\ TEST \\ TEST3.xlsb,C:\\ TEST \\ TEST4.xlsb,那么您可以例如實現另一個函數以將文件名構建為字符串並將其設置為函數“ test”的參數
Function goThroughFiles()
Dim front as String
Dim ending as String
Dim i as Integer
Dim strPath as String
front = C:\TEST\TEST
ending = .xlsb
i = 1
// start with filename that has no number in it
strPath = front & ending
// check if file exists
Do Until Len(Dir(strPath)) = 0
call test(strPath)
i = i+1
strPath = front & i & ending
Loop
您需要更改原始功能,因此它接受一個參數:
Function test(strPath as String)
並將使用該路徑的每一行替換為您的輸入變量
xl.Workbooks.Open ("C:\TEST\Test.xlsb")
變
xl.Workbooks.Open (strPath)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.