获取名称中包含 unicode 字符的文件的文件大小 (FileLen()) [Excel VBA]

Get file size (FileLen() of a file that has unicode characters in the name [Excel VBA]

我正在尝试列出 Windows 中目录的内容。一切都按预期工作,但是当我尝试获取文件的文件大小时(Debug.Print FileLen(filepath & filename) 使用函数 FileLen() 我在第二个文件上收到错误 53,因为它的名称中有一个 unicode 字符(a全角数字符号 U+FF03)。有什么处理方法吗?

目录内容 c:\Z\Test\:

1#.txt
2#.txt

请注意,第一个文件有一个“正常”数字符号,第二个文件名有一个全角数字符号 (U+FF03)。这里的 VBA 代码在没有第二个 Debug.Print.

的情况下工作正常
Sub ListFiles()
Dim filename As String
Dim filepath As String
filepath = "c:\Z\Test\"
filename = Dir(filepath)
Do While filename <> ""
   Debug.Print filename
   Debug.Print FileLen(filepath & filename)
   filename = Dir()
Loop
End Sub

请尝试下一种方法。 VBScript 对象能够处理文件名中的非 ASCII 字符:

Sub ListFilesNonASCIIName()
   Dim FSOLibrary As Object, fldObj As Object, fsoFile As Object
   Dim foldPath As String
   Set FSOLibrary = CreateObject("Scripting.FileSystemObject")
    foldPath = "c:\Z\Test\"
    Set fldObj = FSOLibrary.GetFolder(foldPath)
    For Each fsoFile In fldObj.files
         Debug.Print fsoFile.Name, fsoFile.Size
    Next
End Sub