【发布时间】:2015-09-09 18:36:50
【问题描述】:
我正在尝试使用 VBA 代码循环浏览文件夹在此处找到:Loop Through All Subfolders Using VBA
我只是复制并添加了我自己的宏的代码。虽然它没有给出错误。代码不起作用。当我运行宏时它根本没有响应。
我有 500 多个文件需要对其应用宏 - 其中一些文件确实嵌套在文件夹中。
我真的很感激有人帮助我创建一个工作宏。 在堆栈交换中找到的那些 - 要么给出错误,要么根本不响应。
如果有人拥有此处提交的代码的启用宏的工作版本 - 这将是一个很大的帮助。
我很清楚有 VBA excel 循环遍历文件夹代码,还有一个递归的 - 当我测试这些解决方案时,它们对我不起作用。这并不是说它们根本不起作用。
将我指向其他线程对我没有帮助 - 我已经阅读了所有线程。 我花时间测试它们。
这就是我需要的:
- 在文件夹 > 子文件夹 > 子文件夹中查找特定类型的文件,即 docx - 应用我自己的宏
在 Stack exchange 上找到第 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 代码的工作版本:stackoverflow.com/questions/14245712/…
-
嗨,我刚刚测试了它 - 出于某种原因它不起作用。我确定我做的不对
-
您使用 ActiveDocument,但循环不会改变 - ActiveDocument 只是开始时打开的文档。您需要包含更多内容,可能是为了在此时首先实际打开文件。
-
您好,我只想将宏应用于文件夹及其子文件夹中的所有文件。昨天我真的花了一整天的时间试图找到一个工作版本。我不是 VBA 程序员,因此确实需要专业人士的帮助。每当我将其粘贴到 word 宏中时,代码都不会执行。
-
嗨,谢谢,投反对票真是一件光荣的事情——当我清楚地表明我正在测试代码并且它对我不起作用时。没有人能帮我指出错误在哪里。这是一个供新手寻求帮助的地方。但是,如果没有人愿意提供帮助而只是重定向到我已经阅读和测试过的线程,那就太卑鄙了。