Использование 'FileLen' с расширением файла четыре ди git - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над процедурой, которая получает длину файла для каждого из большого количества файлов изображений. Когда процедура запускает длину файла для большинства файлов, она работает отлично, но некоторые изображения имеют расширение файла «.jpeg», и команда FileLen выдает ошибку «Файл не найден» для этих файлов. Используемая строка кода:

ActiveCell.Offset(ColumnOffset:=2).Value = FileLen(D & N)

Где D - текстовая переменная, содержащая букву диска, а N - текстовая переменная, содержащая путь и имя файла.

Я проверил строковые переменные, и они указали правильный полный путь и имя файла для команды FileLen. Я также настроил тестовую процедуру для проверки с другими файлами, и это дает тот же результат. Правильно ли я считаю, что FileLen не работает с расширениями файлов 4 di git? Есть ли простой способ обойти эту проблему?

Подпрограмма будет проверять и сравнивать около 240 000 файлов, при этом справедливая пропорция будет .jpeg, поэтому вход и изменение расширений невозможны.

Роб

1 Ответ

0 голосов
/ 04 мая 2020

FileLen может обрабатывать расширения, содержащие более 3 символов, так что это не ваша проблема.

Предполагая, что ваши значения для D и N являются правильными (вы должны рассмотреть возможность использования более значимых имен для ваших переменных), я могу представить, что это может быть перепутано из-за вмешательство между коротким и длинным именем файла, но я не могу доказать это.

Вы можете попробовать использовать FileSystemObject в качестве альтернативы. Добавьте ссылку на среду выполнения сценариев и используйте:

Option Explicit

Dim fso As FileSystemObject

Function getFSO() As FileSystemObject
    ' Create object only if neccessary
    If fso Is Nothing Then Set fso = New FileSystemObject
    Set getFSO = fso
End Function

Function getFilesize(filename As String) As Long
    ' Return the size of a file or -1 if not found or any error 
    getFilesize = -1
    On Error Resume Next
    getFilesize = getFSO.GetFile(filename).Size
    On Error GoTo 0

End Function

Использование:

ActiveCell.Offset(ColumnOffset:=2).Value = getFilesize(D & N)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...