【发布时间】:2015-09-24 01:40:24
【问题描述】:
循环遍历目录中文件的代码块:
Dim file As Variant
file = Dir(directory)
While (file <> "")
If (InStr(file, ".xlsx") > 0) And (InStr(file, "Percentage") = 0) And (InStr(file, aggregateFilename) = 0) Then
Call fight_dynamics_by_percentage_buckets(aggregateFilename, directory, file, folderToRunMacro, num_buckets)
End If
file = Dir
Wend
在我的代码的前面,用户选择了一个存储一组文件的目录。在我的测试目录中,我有以下文件:
Analyzed.11.14.383.Chamber1.xlsx
Analyzed.11.14.383.Chamber2.xlsx
Analyzed.11.14.383.Chamber3.xlsx
当我运行宏时,程序将文件名提取为:
Analyzed.11.14.383#494E5A0.xlsx
Analyzed.11.14.383#494E5A1.xlsx
Analyzed.11.14.383#494E5A2.xlsx
我以前在以前的目录中使用过这个确切的代码,并且提取正确的文件名没有问题。
这是怎么回事?
【问题讨论】:
-
什么操作系统?什么版本的 Excel?
-
什么(Excel 除外)软件自动生成了工作簿,生成文件名的代码是什么?在我看来,你那里有一些 unicode。
-
@Jeeped 我也想知道——但看起来乱码部分是一个数字的十六进制表示,如果在一个编码中解码为“Chamber1”的 Unicode 字符串解码为另一个中的十六进制字符串。
-
实际上问题似乎并非源自 Chamber,而是源自 Chamber 之前的时期(即句号)。它也可能是零长度空格或其他一些被错误地用作原子分隔符的稀有字符。 FWIW, A0 (#160;) 是一个不间断的空格。