Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > VBA|Цикл по временным файлам


Автор: Ethex 6.7.2018, 14:58
Доброго времени суток
Имеется процедура, создающая внутри каталога с выбранным документом Word файлы, вида примерно следующего:
Имя документа_временный_1.docx
Имя документа_временный_2.docx
И так далее, до количества страниц выбранного документа. 
Сразу за ней вызывается процедура, содержащая цикл по файлам каталога. Внутри цикла процедура открывает временный файл, берёт данные из него, закрывает, убивает. Если файлов, скажем, 12, то цикл будет идти по порядку 1 - 10 - 11 - 12 и только потом уже - 2 - 3 -...
Код

...
For Each timeless In fold.Files
SysCmd acSysCmdUpdateMeter, cnter
     If InStr(timeless.Name, "_временный_" & CStr(tempCounter) & ".") > 0 Then
     Set wd = app.Documents.Open(timeless.path)
...
 wd.Close: Set wd = Nothing
     Kill timeless.path
     tempCounter = tempCounter + 1
     End If
  cnter = cnter + 1
  Next
...

Страждущие обратились ко мне с просьбой избавить их от последствий такого порядка открытия документов. Я попробовал объявить переменную tempCounter, с помощью которой дополнить условие. Но к тому моменту как она получает значение 10, нужные файлы уже пройдены циклом и, соответственно, нужных операций с ними не происходит. Прошу подсказки как верно организовать цикл
Да, внутри таблиц Access данные лежат неупорядоченно, в каком бы порядке они бы туда не заносились. Страждущие в силах это понять и даже признают решение проблемы желательным, а не принципиальным. Но мне самому интересно решение  

Автор: Ethex 6.7.2018, 16:10
На ум пока лезет:
- изменить процедуру, создающую временные файлы, так, чтобы сохраняла их не в каталоге с исходным документом, а в отдельном. А дальше логический цикл на наличие в каталоге файлов;
- GoTo. А вот об этом знакомые программисты мне говорили и думать забыть

Автор: Akina 6.7.2018, 18:27
Именовать файлы с ведущими нулями у чисел. Не Имя документа_временный_1.docx, а Имя документа_временный_01.docx...

Автор: Ethex 9.7.2018, 15:10
Цитата(Akina @  6.7.2018,  18:27 Найти цитируемый пост)
Именовать файлы с ведущими нулями у чисел. Не Имя документа_временный_1.docx, а Имя документа_временный_01.docx... 

Увы, файлы по прежнему открываются не в том порядке

Автор: Akina 9.7.2018, 15:51
Цитата(Ethex @  9.7.2018,  16:10 Найти цитируемый пост)
файлы по прежнему открываются не в том порядке 

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

Автор: Ethex 9.7.2018, 16:04
Цитата(Akina @  9.7.2018,  15:51 Найти цитируемый пост)
Тогда сначала получить список файлов

Имеется в виду массив?
Изначально для этих целей я использовал Список (элемент управления). Однако если количество файлов превышало 243 (кажется... Или где-то около этой цифры), решение не подходило, т.к. пути к оставшимся файлам не заносились. А попадаются документы, от которых может быть более тысячи временных. Честно говоря, особо не тестировал, а сразу перешёл на цикл по файлам

Автор: Akina 9.7.2018, 18:51
Массив. Или коллекция - ее можно сортировать при вводе, просто добавляя ведущие нули текстовым ключам.

Автор: Ethex 11.7.2018, 08:06
Ну чтож
Не будет же откровением, если скажу что с помощью массива удалось добиться открытия в нужном порядке?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)