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

壁虎

我正在尝试在 Windows 中列出目录的内容。一切都按预期工作,但是当我尝试获取文件的文件大小时(Debug.Print FileLen(filepath & filename)使用该函数,FileLen()我在第二个文件上收到错误 53,因为它的名称中有一个 unicode 字符(全角数字符号 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章