VBA file = Dir()检索乱码文件名

时间:2015-07-06 19:13:35

标签: vba excel-vba dir excel

循环遍历目录中文件的代码块处理:

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

我之前的目录使用过这个确切的代码,并且在提取正确的文件名时没有遇到任何问题。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

我没有看到您的代码有任何问题,它也适用于我。它可能是excel问题的特定系统。您可以使用其他选项来获得相同的结果,以下是供您参考的代码。祝你有个美好的一天

Set filesys = CreateObject("Scripting.FileSystemObject")
For Each sfile In filesys.GetFolder(directory).Files
    file = filesys.GetFileName(sfile)
    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
Next