powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Имя файла_порядковый номер
19 сообщений из 19, страница 1 из 1
Имя файла_порядковый номер
    #38663525
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комрады, приветствую.
Существует необходимость создания большого количества файлов. Файлы создаются из VBA. Подскажите, пожалуйста, как создавать файлы по маске <статичное имя>_<порядковый номер>.xlsx. Плюс при создании нового файла в указанной директории должна проводиться проверка существующих файлов, определение максимального существующего порядкового номера и создание нового файла с порядковым номером +1.
Заранее спасибо.
_____________________
А что на самом деле хотел сказать "Frost_Imp" никто не знает, так как администрация форума попросила его быть вежливым.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38663958
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сохранение - SaveAs
проверка наличия - Dir
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670049
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
не то. Постановка задачи кратко
В директории лежит файл filename_16062014_ 1 .html
Нужно создать файл filename_16062014_ 2 .html
а потом filename_16062014_ 3 .html и т.д.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670116
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и? Что смущает-то?
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670147
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
как из имен существующих файлов вычленить максимальное значение порядкового номера, который следует после нижнего подчеркивания?
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670233
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просмотреть список файлов Dir-ом
Вычленять из каждого файла номер с помощью InStrRev, Mid$
Сравнивать с предыдущим, запоминать тот, который больше
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670240
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
да, в теории я именно к этому, слава богу, и пришел. Сложность с кодом. Пока получается очень громоздко. С нуля код - пока для меня проблема. Рокирую найденные в интернете примеры. Поэтому и громоздко
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670243
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так где код-то?
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670306
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
плз, не нужно меня третировать. "Родить" нужный код я смогу и без подобных подсказок. Просто это займет очень много времени. Я обратился за подсказкой, которую ОБЫЧНО (видимо, не в этом топике) добрые люди дают сразу же, без пренебрежительных подстегиваний и нравоучений, и в обсуждении которой рождается результат.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670318
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Imp,
Ну потратьте его, Вам же нужно.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670360
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с каких пор sql.ru превратился в пристанище троллей?
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670389
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_Impс каких пор sql.ru превратился в пристанище троллей?
Вроде взрослый человек, а ведет себя как студент-бездельник, которому лень палец о палец ударить.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670396
kiv-1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670447
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiv-1980,
прекратите, пожалуйста, истерику. Я не первый год зарегистрирован на этом форуме и именно благодаря ему значительно продвинулся в таком НЕПРОФИЛЬНОМ для меня вопросе, как MS Access и VBA. Тыкать меня носом в пособие для школьников не нужно, мне не 15 лет. Если у вас нет желания, или настроения или другие жизненные проблемы - пожалуйста, пройдите мимо и уступите другому. В конце концов, я сразу дал понять, что прекрасно знаю этику поведения SQL.ru, но, тем не менее, прошу ответа или совета к своей задаче. "Почитайте учебник и сделайте" - это не совет. Если не в состоянии сформулировать что-то более стоящее - отошлю вас к написанному мною же выше.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frost_ImpЯ обратился за подсказкой, которую ОБЫЧНО (видимо, не в этом топике) добрые люди дают сразу жея дал вам подсказку сразу же 16134252 16168648
вы ответилиFrost_ImpСложность с кодом. Пока получается очень громоздко.Что вы хотите дальше? Либо выкладывайте код, посмотрим как его умять, либо задавайте конкретные вопросы, получите ответы. Вы не делаете ни того не другого, при этом находите тут третирование и истерики.
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670682
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось следующее. Работает.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Function CreateHTMLfile(hText$)
iFolderPath$ = [Forms]![frmCreateCampaign]![fldPath].Value
iFileName$ = [Forms]![frmCreateCampaign]![fldFileName].Value
Call CheckDir(nextNum%)

Dim iFullName$
If nextNum% = 0 Then
    iFullName$ = iFolderPath$ & iFileName$ & "_1.html"
    Else
    iFullName$ = iFolderPath$ & iFileName$ & "_" & nextNum% + 1 & ".html"
    End If
Open iFullName$ For Append As #1
    Print #1, hText$
    Close #1

End Function

Function CheckDir(nextNum%)
iFolderPath$ = [Forms]![frmCreateCampaign]![fldPath].Value
iFileName$ = [Forms]![frmCreateCampaign]![fldFileName].Value
Dim fn$, f%, l%, leght%, prevNum%
fn$ = Dir(iFolderPath$ & iFileName$ & "*")
Do While fn$ <> ""
    f = InStrRev(fn$, "_")
    l = InStrRev(fn$, ".")
    leght = l - f - 1
    nextNum = Mid(fn, f + 1, leght)
    If nextNum% > prevNum% Then
        prevNum% = nextNum%
        End If
    fn$ = Dir
    Loop
'MsgBox nextNum%
End Function

...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670722
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по оптимизации
1)
Код: vbnet
1.
2.
3.
4.
5.
If nextNum% = 0 Then
    iFullName$ = iFolderPath$ & iFileName$ & "_1.html"
    Else
    iFullName$ = iFolderPath$ & iFileName$ & "_" & nextNum% + 1 & ".html"
    End If

выделенные строки абсолютно лишние, так как вторая ветка все равно даст нужный результат

2) функция придумана для того, чтобы возвращать значение, можно, конечно, вызывать так, как вы вызываете, но лучше так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function CreateHTMLfile(hText$)
...
nextNum = CheckDir()
...

Function CheckDir()
....
CheckDir = ....
.....
End Function
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670728
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3) логично было бы искать сразу файлы с нужным расширением
Код: vbnet
1.
fn$ = Dir(iFolderPath$ & iFileName$ & "*.html")


тогда можно не искать в дальнейшем точку InStrRev(fn$, "."), а сразу резать с помощью функции Mid$, наверняка зная, где эта точка.

Это даст выигрыш в скорости, если в папке есть много посторонних файлов.

Но в целом, никаких претензий к коду нет, не знаю, что смущает
...
Рейтинг: 0 / 0
Имя файла_порядковый номер
    #38670739
Frost_Imp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправил. Благодарю!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Имя файла_порядковый номер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]