Excel VBA检查文件是否存在扭曲

时间:2015-02-18 18:08:50

标签: vba excel-vba file-exists excel

在这个主题中很难具体而且简短,但我尽我所能:

我们假设我们在特定位置有一个文件夹,我们可以获取带有名称的文件,例如让我们使用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

提前谢谢你!

1 个答案:

答案 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