VBA Excel открытое имя файла Unicode для чтения двоичного доступа - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь открыть файл с именем файла Unicode для двоичного доступа, чтобы вычислить контрольную сумму MD5.У меня правильно указаны имена файлов и путь в листе Excel.

Используемые имена файлов :
File Names Used

В этом случае код завершается с ошибкой Open sPath For Binary Access Read As lngFileNumber с 'Run-Time error'52': Bad file name or number

Function GetFileBytes(ByVal sPath As String) As Byte()
    ' makes byte array from file
    Dim lngFileNum As Long, bytRtnVal() As Byte, bTest
    lngFileNum = FreeFile
    If LenB(Dir(sPath)) Then ''// Does file exist?
        Open sPath For Binary Access Read As lngFileNum
        'a zero length file content will give error 9 here
        ReDim bytRtnVal(0 To LOF(lngFileNum) - 1&) As Byte
        Get lngFileNum, , bytRtnVal
        Close lngFileNum
    Else
        Err.Raise 53 'File not found
    End If
    GetFileBytes = bytRtnVal
    Erase bytRtnVal
End Function

Есть предложения?

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете сделать имя файла «приемлемым», преобразовав его с помощью функции StrConv.Я попробовал ваш код с этой модификацией:

Open StrConv(sPath, vbUnicode) For Binary Access Read As #1

... и команда Open успешно выполнилась с моим тестовым именем файла abc✓✘.mp3.Я не могу точно сказать, будет ли это работать с вашим, так как вы включили их как изображение , но это должно быть хорошо.

Не связано:
Следующая строка (Redim...) имеет другую проблему для отладки.(Возможно, вы не можете использовать LOF с этим типом файла? Или вместо этого использовать FileLen?)


Дополнительная информация:

...