我找到了这个过程这里,用于测试文件是否存在:
Public Function FileExists(strFileFullPath As String) As Boolean
Dim lSize As Long
On Error GoTo HandleError
lSize = -1
If GetAttr(strFileFullPath) And vbDirectory Then GoTo HandleExit
lSize = FileLen(strFileFullPath)
FileExists = lSize > -1
HandleExit:
Exit Function
HandleError:
Resume Next
End Function我首先想纠正的是:
If GetAttr(strFileFullPath) And vbDirectory Then转入:
If GetAttr(strFileFullPath) = vbDirectory Then但后来意外地发现,结果是一样的。
有人能解释一下第一个版本是如何解释的吗?
发布于 2019-09-12 21:49:15
这里的AND按位进行比较。
GetAttr(文件名)返回一个位掩码。
如果文件只是一个目录,则将其更改为=只会返回相同的结果。如果它是隐藏的,或者存档的,或者是一个系统目录,那么它将有一个不同的值,并且它们将不再相等。按位比较可以确保至少文件名引用一个目录。
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/getattr-function
https://stackoverflow.com/questions/57914879
复制相似问题