首先,我很抱歉,如果問題太新手,因爲我仍然自學VBA。VBA編程:workbooks.open打開多個文件
問題:我在「最終文件夾」中有6個excel文件。我需要依次打開每個代碼,從代碼所在的工作簿中放入一些數據(我正在使用此工作簿作爲源代碼)。
錯誤:我試過了多個選項,但是最新的代碼(下面)將所有6個文件打開在一起,而不是依次打開它們。
我的觀察:似乎在腳本循環中運行workbooks.open時,默認情況下所有文件都會打開。
請幫忙。謝謝
Sub PopulateFinalFile()
Dim filpath As String
Dim fso As Scripting.FileSystemObject
Dim fil As Scripting.File
Dim fldr As Scripting.Folder
filpath = "C:\Users\deepak.ved\Desktop\Reports\Final Reports"
Set fso = New Scripting.FileSystemObject
Set fldr = fso.GetFolder(filpath)
For Each fil In fldr.Files
Application.Workbooks.Open (fso.GetFile(fil.Path))
Next fil
End Sub
無關的問題:如何指向使用FSO的工作簿。就像我使用getfile
或folder.files
一樣,它會返回一個路徑。當我將路徑傳遞給工作簿時,我需要有workbook.open(path)
,但我只想指向該工作簿而不是打開它。
如果按順序打開多個文件,則需要在workbook.open代碼中使用MultiSelect:'Application.Workbooks.Open(fso.GetFile(fil.path),MultiSelect:= True)'。此外,當您使用MultiSelect時,文件的順序不再保留,因此您需要提供循環。嘗試這篇文章的幫助[鏈接](http://stackoverflow.com/questions/25180061/excel-vba-getopenfilename-error-on-multiselect-true) – user1
嘿吉日,謝謝你的快速回復。我會檢查這個,並讓你知道它是否工作:) –
創建一個工作簿變量,說'wb',然後在主循環中有'Set wb = Application.Workbooks.Open(fso.GetFile(fil.Path))' 。仍然在該循環的主體中,處理'wb',然後關閉它。這樣,目錄中的工作簿就會按順序處理,這就是您想要的。這個問題可能有所幫助:http://stackoverflow.com/q/5851531/4996248 –