2014-07-13 126 views
0

在子目錄中打開文件我有一個名爲像這樣的文件夾的目錄:Excel的VBA:通過模式

"Voy [yyyymmdd]-[no]" 

其中[YYYYMMDD]是指日期和[無]每個文件夾一個增量。

dir\Voy 20140101-100\* 
dir\Voy 20140105-101\* 
dir\Voy 20140109-102\* 
dir\Voy 20140113-103\* 
dir\Voy 20140117-104\* 
dir\Voy 20140121-105\* 
dir\Voy 20140125-106\* 
[...] 

我想要做訪問文件(通常命名爲「myfile.xlsx」)在最新的文件夾,那就是:一個具有最高[無]

如何做到這一點? 我應該使用DIR功能參考here

回答

0

試試這個。您可能需要適應這個你爲你的目錄和文件命名約定

Sub GetLatestFiles() 
    Dim strDir As String, fs As Object, startFolder As String, subfolder As Object, increment As Integer, latest As Integer, latestFolder As String 

    Set fs = CreateObject("Scripting.FileSystemObject") 
    startFolder = "C:\YourDirectory" 
    Set folder = fs.GetFolder(startFolder) 
    latest = 0 
    latestFolder = vbNullString   

    For Each subfolder In folder.SubFolders 
     increment = CInt(VBA.Right(subfolder.Path, Len(subfolder.Path) - WorksheetFunction.Find("-", subfolder.Path, 1))) 

     If increment > latest Then 
      latest = increment 
      latestFolder = subfolder.Path 
     End If 
    Next 

    Workbooks.Open latestFolder & "\" & "myfile.xlsx" 
End Sub 
  • 代碼通過所有子文件夾循環在主目錄
  • 對於每一個它使一個音符的版本號和保持跟蹤最高
  • 最後,打開工作簿最新
+0

我會在第11行類型不匹配:增量= CINT(...的off-by-1-錯誤 – Leo308

+0

無視以前需要淘汰一些其他的? folde RS。如果instr(...應該做的伎倆。 – Leo308

+0

經過一些改編後,我得到了它的工作,謝謝一堆!我試圖將latestFolder的最終價值打印到我的工作簿中的單元格,它是「」。任何想法爲什麼? – Leo308