用于检查文件是不是存在的 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 宏的主要内容,如果未能解决你的问题,请参考以下文章