我試圖循環: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文件。
這篇文章顯示了VBA代碼的工作版本:http://stackoverflow.com/questions/14245712/cycle-through-sub-folders-and-files-in-a-user-specified-root-directory/28053914#28053914 – stenci
嗨,我剛剛測試它 - 出於某種原因,它不工作。我確定我沒有做正確的事情 – user2533460
你使用ActiveDocument,但是你的循環沒有改變 - ActiveDocument只是在開始時打開的文檔。你需要包括更多,可能在這一點上首先打開文件。 –