ОК, я только что написал очень простой сценарий VBA, который отключается и захватывает размер файла, найденного в указанном месте ( edit код обновления с 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!
, и я ничего не сделаю, чтобы функция снова заработала. Кто-нибудь видел это раньше, кто-нибудь может указать на ошибку, которую я здесь делаю?
edit : похоже, проблема вызвана тем, что я использовал относительные пути. Я не могу объяснить, почему он работает для новой книги, но не один раз сохранен и открыт, но использование абсолютных путей решает проблему, которая, как определил dscarr, была проблемой «Файл не найден».