【发布时间】:2016-06-12 11:41:40
【问题描述】:
我正在使用 Dir 根据条件选择文件列表,然后将它们存储在字符串数组中。然后我遍历数组并处理文件。
如何处理带有 unicode 字符的文件名?
我尝试做StrConv,但没有帮助。
vfile = Dir(vCurrDir & vCrit, vbNormal) 'vCrit is something like *test*
然后我会尝试像这样访问文件的属性:
vfilename = vCurrDir & "\" & vfile
Set objFSO = CreateObject("Scripting.FileSystemObject")
vDateMod = objFSO.GetFile(vfilename).datelastmodified
在最后一行,我收到一条错误消息,指出找不到文件。这只发生在带有 unicode 字符的文件名上。
这里有另一个帖子:Working with Unicode file names in VBA (using Dir, FileSystemObject, etc.),但它没有t solve the problem withDir`。
我的例子: VBA(观看)c:\my-test-file.pdf Unicode: c:\my-test-file.pdf
(您在这里看不到区别,但如果您复制名称并将它们粘贴到 Notepad++ 中,您会看到破折号是两个文件的不同字符,VBA 正在将 unicode 破折号字符转换为 Windows 区域设置破折号)
或链接问题中的示例: 3_Polish.txt(Unicode 格式)与 3_Polish.txt(VBA 格式)
【问题讨论】:
-
您是否尝试在您的
vfilename上添加手表?显示什么? -
是的,当然,VBA 正在将文件名转换为 Windows 语言环境:(您在此处看不到它,但两个文件名之间的破折号不同,如果您将粘贴复制到 Notepad++,您会看到我平均值)VBA(手表)c:\my-test-file.pdf Unicode: c:\my-test-file.pdf
-
您是否尝试过使用
fso.GetFolder(path)?