vba excel打开二进制访问的unicode文件名读取

时间:2018-06-01 01:49:19

标签: excel excel-vba unicode-string vba

我正在尝试打开具有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 :(得分:2)

您可以使用StrConv功能转换文件名,使文件名“可接受”。我尝试了这个修改代码:

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

... Open命令使用我的测试文件名abc✓✘.mp3成功运行。我不能确定它是否可以与你合作,因为你把它们包含在图像中,但它应该没问题。

<强> 相依:
下一行(Redim...)有一个不同的问题供您调试。 (也许您不能将LOF用于此类型的文件?或者可能使用FileLen代替?。

更多信息: