【发布时间】:2019-03-18 16:38:45
【问题描述】:
我编写了一个使用 Beforedoubleclick() 范围的宏:双击第 5 列的单元格,然后宏进入特定文件夹以查找在单元格内写入代码的 pdf 文件。
此宏无法扫描子文件夹,但我的 pdf 文件可能位于子文件夹中。
我在网上搜索,似乎我必须使用循环或类似的东西。这段代码我不知道怎么写。
我的宏:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim testo As String
Dim nomefile As String
Dim path As String
On Error Resume Next
If Target.Column = 5 Then
path = "C:\Users\Alex\"
testo = path & Cells(Target.Row, 5)
nomefile = Dir(Left(testo, Len(testo)) & "*.pdf")
If nomefile = "" Then
MsgBox "File non trovato", vbCritical, "ATTENZIONE"
Exit Sub
End If
Do
Shell "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe " & path & nomefile, vbMaximizedFocus
nomefile = Dir
Loop While nomefile <> ""
End If
End Sub
【问题讨论】:
-
您应该在这里查看如何使用
FileSystemObject或FSO,这正是您所需要的。 -
在 SO 中有很多例子可以通过子文件夹进行递归搜索。如果您使用
Cmd窗口Dir命令,如this question 所示,您甚至可以在字符串中包含通配符。虽然,如果您的文件名包含代码 > 255 的字符,您可能需要使用 fileSystemObject 命令以外的其他内容来读取它们。