【问题标题】:Excel macro for checking existence of file用于检查文件是否存在的 Excel 宏
【发布时间】:2015-06-08 12:33:34
【问题描述】:

我对 VBA 没有任何了解。我有包含文件路径的 excel 文件,我想在该位置找到文件的存在。

我尝试了以下方法,但需要比这更好的方法

Sub Test_File_Exist_With_Dir()
    Dim FilePath As String
    Dim TestStr As String

    FilePath = ActiveSheet.Range("A7").Value

    TestStr = ""
    On Error Resume Next
    TestStr = Dir(FilePath)
    On Error GoTo 0
    If TestStr = "" Then
        ActiveSheet.Range("B7").Value = 0
    Else
        ActiveSheet.Range("B7").Value = 1
    End If

End Sub

预期输出

    File path                       Existence
    C:\Users\Desktop\Excel\Jan15.txt    1
    C:\Users\Desktop\Excel\Feb15.txt    1
    C:\Users\Desktop\Excel\Mar15.txt    1
    C:\Users\Desktop\Excel\Apr15.txt    0
    C:\Users\Desktop\Excel\May15.txt    0

如果我向数据添加新行,那么它的存在应该会自动填充。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    Yau 可以在您的工作簿中直接将其用作函数,作为经典的 Excel 公式,只需键入 =File_Exist(A1),这将用作普通函数(您可以轻松地自动填充下一行)。

    Public Function File_Exist(ByVal FilePath As String) As Integer
        On Error Resume Next
    
        Dim TestStr As String
        TestStr = Dir(FilePath)
        On Error GoTo 0
    
        If TestStr <> "" Then
            File_Exist = 1
        Else
            File_Exist = 0
        End If
    
    End Function
    

    如果您想自动测试存在性并在每次向数据添加新行时填充,那么您将不得不使用Worksheet_SelectionChange,但如果您有实用功能,它会比这更困难并且不是那么有用!

    【讨论】:

    • 作为一个小补充,你可以添加 Application.Volatile True 在函数的开头。这将使函数更加动态,因为它不依赖于手动刷新工作表。不过,这可能会使工作簿变慢一些。
    • 好的,我可以手动完成,但这会为所有人提供相同的输出。
    • 就我个人而言,我会删除On Error 以查看调试中发生了什么,您的工作簿是否处于自动计算模式?按 F9 重新计算工作簿或 Shift+F9 仅重新计算活动工作表! ;)
    • 你改变了函数名,所以返回值也应该改变。修复:Test_File_Exist_With_Dir = -> File_Exist =
    • @ya_dimon : 多么新手的错误!^^ 谢谢指出!
    猜你喜欢
    • 1970-01-01
    • 2016-05-16
    • 2019-06-05
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多