好的,我刚刚编写了一个非常简单的 VBA 脚本,它会启动并获取在指定位置找到的文件的文件大小(从dscarr编辑更新代码):
Public Function FileSize(path As String) As Variant
On Error GoTo Err_FileSize:
Dim retVal As Variant
Dim filesys As Object
Dim file As Object
retVal = ""
Set filesys = CreateObject("Scripting.FileSystemObject")
Set file = filesys.GetFile(path)
retVal = file.Size
Exit_FileSize: On Error Resume Next
FileSize = retVal
Exit Function
Err_FileSize: retVal = "Error: " & Err.Description
Resume Exit_FileSize
End Function
如果我将其导入新工作簿,请将文档另存为“启用 Excel 宏的工作簿”以及一个名为的空文件readme.txt
,然后将“./readme.txt”放入 A1 并将“=FileSize(A1)”放入 A2、A2正确评估为readme.txt
, 0 字节的文件大小。伟大的。如果我然后保存文档,关闭并重新打开它,我会收到宏被禁用的警告。如果我启用它们,A2 的内容已更改为#VALUE!
,我所做的任何事情都不会使该功能再次起作用。有没有人见过这个,谁能指出我在这里犯的错误?
编辑:问题似乎是由我使用相对路径引起的。我无法解释为什么它适用于新工作簿,但不是一次保存并重新打开,但使用绝对路径解决了问题,正如 dscarr 所确定的,这是一个“找不到文件”问题。