在这个主题中很难具体而且简短,但我尽我所能:
我们假设我们在特定位置有一个文件夹,我们可以获取带有名称的文件,例如让我们使用x1; X2; x3等。
然后我们有一个excel文件,我们在列中有数字。恩。 1; 2; 3;等
我编写了一个脚本,可以点击这些数字,这样就会弹出一个资源管理器窗口,搜索文件夹中的特定号码。
例如,我们点击数字" 2",将弹出一个资源管理器窗口,其中包含" 2x"的搜索结果。在那个特定的文件夹中。
脚本如下所示:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim c As String
Dim backup As String
c = Target.Range
backup = "~%3D" & Left(c, 7)
If Left(c, 1) = "C" And Len(c) > 7 And Right(c, 1) = "$" Then 'this part doesn't really matter
RetVal = Shell("c:\Windows\explorer.exe ""search-ms:displayname=Search%20Results&crumb=System.Generic.String%3A" & backup & "%20kind%3A%3Dfolder&crumb=location:%5C%5Cserver%5Cbackup$", vbNormalFocus)
End If
End Sub
我想知道是否有可能找出是否存在与搜索匹配的文件,或者它是否存在。我的意思是,例如,如果我点击数字" 2"在excel中,将弹出资源管理器,它将显示名称包含" x2"或者它会显示" 没有与您的搜索匹配的项目。"
如果我们有搜索结果或,我想以某种方式返回优秀。 即使是布尔也可以为我做到这一点。
我不能像普通支票一样使用:
If Dir(folder) = "" Then
因为我们可以有多个具有相同名称的文件,并且它们的名称包含其创建日期。恩。 x1_02_04_2015我们也可以有一个x1_05_11_2014
提前谢谢你!
答案 0 :(得分:1)
您可以尝试以下操作。您并不需要使用任何shell功能
Sub LoopThroughFilesWorkbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim MyObj As Object, MySource As Object, file As Variant, myBool As Boolean
file = Dir("c:\testfolder\")
Do While file <> ""
Bool = False
If InStr(file, "test") > 0 Then ' you can change teh condition here to fit your criteria
myBool = True
MsgBox ("Found" & file)
End If
file = Dir
Loop
If Not myBool Then
MsgBox ("File not found")
End If
End Sub