获取名称中包含 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
我正在尝试列出 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