任何人都可以帮我一个vba代码,该代码将在共享驱动器的所有文件夹和子文件夹中的文本文件中搜索用户输入关键字 . 并且,如果在文本文件中找到关键字,则应返回包含文本文件的文件夹名称和路径 .
我有一个窗口表单,其中用户可以输入关键字,当用户点击搜索按钮时,它必须执行上述功能 .
例如:如果用户搜索“Business”之类的关键字,则应查看共享驱动器中所有文件夹和子文件夹中所有文本文件中的“Business” . 如果找到它,它应该返回文件夹名称及其包含文件的路径 . 输出示例
文件夹名称:ABC文件夹路径:C:\ office \ ABC
任何人都可以帮我提前代码感谢你 .
这是我的代码
enter code here
Public Sub FindFiles()
'添加了对'Microsoft Shell Controls And Automation'的引用
Dim shl As Shell32.Shell
Dim fol As Shell32.Folder
昏暗的行长
设置shl = New Shell32.Shell
设置fol = shl.Namespace(“C:\ Users \”)
row = 1
ProcessFolder递归fol,row
结束子
Private Sub ProcessFolderRecursively(作为Shell32.Folder,ByRef行为长)
昏暗的项目作为Shell32.FolderItem
Dim fol2 As Shell32.Folder
如果Not fol Is Nothing那么
For Each item In fol.Items
If item.IsFolder Then
Set fol2 = item.GetFolder
ProcessFolderRecursively fol2, row
Else
Sheets("Sheet2").Select
Cells(row, 1) = item.path
row = row + 1
End If
Next
万一
结束子
2 回答
我相信这个答案将帮助您回答您的问题 .
在VBA中,您不能使用*等通配符来打开文件 . 如果文件名和位置没有更改,则需要编译所有文件名的列表 .
然后,您可以获取列表,打开列表中的每个文件,并使用find()函数扫描文本doc以搜索关键字 . 如果找到,则返回文件名 .
你面临的问题是编译文件位置来制作列表,我没有答案 . 其余的很容易 .
以下代码可以帮助您
编辑以下代码将给出完整路径的路径名
在上面的代码中改变debug.print行
那是你要的吗?
EDIT2:改变搜索功能
测试它