用于检查文件是不是存在的 Excel 宏

Posted

技术标签:

【中文标题】用于检查文件是不是存在的 Excel 宏【英文标题】: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

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

【问题讨论】:

【参考方案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 : 多么新手的错误!^^ 谢谢指出!

以上是关于用于检查文件是不是存在的 Excel 宏的主要内容,如果未能解决你的问题,请参考以下文章

检查sas的外部excel数据集中是不是存在一行

如何使用 Apache POI 和 Java 代码检查 Excel 文件中是不是存在信息

excel vba检查命令按钮和复选框是不是存在

用于搜索文件是否存在的宏并在Excel单元格中保留Y或N?

检查vb中是不是存在文件[重复]

用于检查值是不是存在的 Excel 公式,否则不显示任何内容 - 也使用条件格式