2015-07-06 3 views
0

блока обработки перекручивания через файлы в каталоге коды:VBA файл = Dir() извлечение тарабарщины файла

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 

я использовал именно этот код, прежде чем на предыдущих каталогах, и не было проблем с извлечением правильных имен файлов.

Что здесь происходит?

+0

Какая операционная система? Какая версия Excel? –

+0

Что (кроме Excel) программное обеспечение автоматически генерирует книги и каков код, лежащий в основе генерации имен файлов? Мне кажется, что у вас есть какой-то юникод. – Jeeped

+0

@ Jeeped Я тоже задавался вопросом - но кажется, что искаженная часть представляет собой шестнадцатеричное представление числа, и было бы странно, если бы строка Unicode, которая декодирует «Chamber1» в одной кодировке, декодирует шестую строку в другой. –

ответ

1

Я не вижу никаких проблем с вашим кодом, и он отлично работает для меня. Это может быть специфическая система выдачи. Вы можете использовать другой вариант, чтобы получить тот же результат, и вот коды для вашей справки. Хороший день

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