2015-12-18 60 views
0

我公司目前已經編寫了如何在特定的文件夾VBA - 複雜的文件打開

Dim MyFolder As String 
Dim MyFile As String 

MyFolder = "K:\Data Directories\Acquisitions" 
MyFile = Dir(MyFolder & "\*.xlsx") 
    Do While Len(MyFile) > 0 

     Workbooks.Open FileName:=MyFolder & "\" & MyFile 

    MyFile = Dir 
Loop 

打開所有文件,現在我想在具有相同名稱的多個文件夾打開的所有文件。

例如:

Dim MyFolder As String 
Dim MyFile As String 
Dim MyFolder2 As String 

MyFolder = "K:\Data Directories\Acquisitions" 
MyFolder2 = MyFolder & "*\June 2015" 
MyFile = Dir(MyFolder2 & "\*.xlsx") 
    Do While Len(MyFile) > 0 

     Workbooks.Open FileName:=MyFolder2 & "\" & MyFile 

    MyFile = Dir 
Loop 

的問題是,我把它弄出來作爲路徑代碼,而不是一個通配符一個實際的「*」 2015年6月以前的*。

該代碼旨在選擇Acquisition目錄中的所有文件夾,然後查看其中的2015年6月文件夾。從那裏,應打開這些多個2015年6月文件夾中的所有Excel文件。我究竟做錯了什麼?

+0

這沒有奏效。我設置了一個msgbox MyFolder2來顯示路徑名。它在2015年6月之前顯示*。然後,在設置MyFile變量的行上出現「Bad file name」錯誤。 – Tollbooth

+1

爲什麼不檢索所有的子文件夾名稱並在其上運行循環? – ManishChristian

+0

我喜歡那個想法。所以基本上是一個代碼來查找主目錄中的所有文件夾,然後遍歷這些文件夾的月份文件夾?我會試一試,但那可能超出我的能力。 – Tollbooth

回答

1

我認爲這會做你想做的。試試看看會發生什麼。

Sub DoFolderPart1() 

    Dim FileSystem As Object 
    Dim HostFolder As String 

    HostFolder = "K:\Data Directories\Acquisitions" 

    Set FileSystem = CreateObject("Scripting.FileSystemObject") 
    DoFolder FileSystem.GetFolder(HostFolder) 
End Sub 

Sub DoFolder(Folder) 
    Dim SubFolder 
    Dim strName As String 
    Dim pos As Integer 

    For Each SubFolder In Folder.SubFolders 

     DoFolder SubFolder 

    Next 

    Dim File 
     strName = Folder.name 
     pos = InStr(strName, "June 2015") 
     If pos > 0 Then 
      For Each File In Folder.Files 
       If Right(File, 4) = "xlsx" Then 
        Workbooks.Open Filename:=File 
       End If 
      Next 
     End If 
End Sub 

我根據我的回答對這個loop-through-all-subfolders-using-vba

+0

太棒了!非常感謝! – Tollbooth

+0

我一直遇到一個問題,在打開它後無法對「文件」執行任何操作。任何想法可能會造成這種情況?例如,如果我在工作簿(文件).Activate打開文件後出現錯誤。 – Tollbooth

+1

爲什麼在打開工作簿後嘗試激活工作簿?看看這個:[鏈接](http://stackoverflow.com/questions/6977807/how-do-i-activate-a-specific-workbook-and-a-specific-sheet) – dev1998