2015-09-09 142 views
-1

我試圖循環:Loop Through All Subfolders Using VBA環通的文件夾 - 通過使用發現這裏VBA代碼文件夾應用宏爲所有文件

我只是複製的代碼,增加了我自己的宏。雖然它不會給出錯誤。代碼不起作用。當我運行宏時,它根本不響應。

我有500多個文件需要應用一個宏 - 其中一些文件實際上深深地嵌套在文件夾中。

我真的很感激有人幫助我創建一個工作的宏。 在堆棧交換中發現的錯誤 - 要麼發出錯誤,要麼根本不迴應。

如果任何人有一個在這裏提交的代碼的宏啓用工作版本 - 這將是一個很大的幫助。

我很清楚,有VBA Excel循環通過文件夾代碼,還有一個遞歸的 - 當我測試這些解決方案,他們不適合我。這並不是說他們根本不工作。

指向其他線程不幫助我 - 我已閱讀所有主題。我花了時間測試它們。

這是我需要什麼:

- 查找特定類型的文件即DOCX的文件夾>子文件夾>子文件夾 - 它

1版上找到堆棧交換應用我自己的宏:

Sub NewFolder() 
    Dim FileSystem As Object 
    Dim HostFolder As String 
    HostFolder = "C:\Users\Shana\Desktop 2\Folder1\" 
    Set FileSystem = CreateObject("Scripting.FileSystemObject") 
    DoFolder FileSystem.GetFolder(HostFolder) 
End Sub 

Sub DoFolder(Folder) 
    Dim SubFolder 
    For Each SubFolder In Folder.SubFolders 
     DoFolder SubFolder 
    Next 
    Dim File 
    For Each File In Folder.Files 
     ActiveDocument.Range.Text = "Replaced" 
     ' Operate on each file 
    Next 
End Sub 

我已經通過其他VBA循環,但通過文件夾代碼看過。我一直無法讓他們工作。

在VBA編輯器中創建宏時的代碼根本不起作用。

2版上找到堆棧交換:

Function GetFilesIn(Folder As String) As Collection 
    Dim F As String 
    Set GetFilesIn = New Collection 
    F = Dir(Folder & "\*") 
    Do While F <> "" 
     GetFilesIn.Add F 
     F = Dir 
    Loop 
End Function 

Function GetFoldersIn(Folder As String) As Collection 
    Dim F As String 
    Set GetFoldersIn = New Collection 
    F = Dir(Folder & "\*", vbDirectory) 
    Do While F <> "" 
     If GetAttr(Folder & "\" & F) And vbDirectory Then GetFoldersIn.Add F 
     F = Dir 
    Loop 
End Function 

Sub Test() 
    Dim C As Collection, F 
    Debug.Print 
    Debug.Print "Files in C:\" 
    Set C = GetFilesIn("C:\Users\Shana\Desktop 2\Folder1\") 
    For Each F In C 
     Debug.Print F 
    Next F 
    Debug.Print 
    Debug.Print "Folders in C:\" 
    Set C = GetFoldersIn("C:\Users\Shana\Desktop 2\Folder1\") 
    For Each F In C 
     ActiveDocument.Range.Text = "Replaced" 
     'Debug.Print F 
    Next F 
End Sub 

上面也不起作用 - 我做錯了什麼?

這是我需要什麼:

- 查找特定類型的文件即DOCX的文件夾>子文件夾>子文件夾 - 申請自己的宏它

請不要爲標記重複,因爲我需要一個工作版本的VBA代碼循環所有我的docx文件。

+0

這篇文章顯示了VBA代碼的工作版本:http://stackoverflow.com/questions/14245712/cycle-through-sub-folders-and-files-in-a-user-specified-root-directory/28053914#28053914 – stenci

+0

嗨,我剛剛測試它 - 出於某種原因,它不工作。我確定我沒有做正確的事情 – user2533460

+0

你使用ActiveDocument,但是你的循環沒有改變 - ActiveDocument只是在開始時打開的文檔。你需要包括更多,可能在這一點上首先打開文件。 –

回答

0

如果有人仍然需要解決這個問題。 VBA循環訪問目錄和子文件夾。

之後,我無法讓代碼在這裏找到工作的原因。

我發現這個VBA從加 -

格雷厄姆市長 http://www.gmayor.com/document_batch_processes.htm

,唯一的缺點是你需要調用的函數,而不是宏。

宏需要轉換爲函數。

感謝格雷厄姆的偉大爲所有那些需要批處理文件的目錄 - 充滿深度嵌套的子文件夾!

相關問題