powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Порядковый номер файла
4 сообщений из 4, страница 1 из 1
Порядковый номер файла
    #38263862
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В папке сохраняются файлы с именами вида NNNNNNNN.txt,
где NNNNNNNN - порядковый номер файла, дополненный слева нулями при необходимости.
Как мне с помощью VBA получить имя файла с "максимальным" номером в каталоге?
...
Рейтинг: 0 / 0
Порядковый номер файла
    #38263878
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяй (получаем максимум в виде числа):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    cName$ = Dir("c:\temp\*.txt")
    nMax& = 0
    While Len(cName) > 0
        If Len(Left(cName, InStr(cName, ".") - 1)) = 8 Then nMax = WorksheetFunction.Max(nMax, Val(cName))
        cName = Dir
    Wend
    MsgBox nMax

Из него ты можешь уже формировать следующий номер и имя файла...
...
Рейтинг: 0 / 0
Порядковый номер файла
    #38264051
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень похожая тема: http://www.sql.ru/forum/1023016/save-as
...
Рейтинг: 0 / 0
Порядковый номер файла
    #38279105
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Работает. В итоге написал вот такую, немного избыточную, функцию:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
'Функция возвращает максимальный порядковый номер из имен файлов вида NNNNNNNN.txt в текущем каталоге
'Если флаг add равен .T., то дополняет результат нулями слева.
'Если в папке назначения имеется файл 99999999.txt, то выводит предупреждение и возвращает слово "overflow"

Public Function NextNum(add As Boolean) As String
Path = ThisWorkbook.Path + "\*.txt"
cName$ = Dir(Path)
nMax& = 0
While Len(cName) > 0
  If Len(Left(cName, InStr(cName, ".") - 1)) = 8 Then nMax = WorksheetFunction.Max(nMax, Val(cName))
  cName = Dir
Wend
nMax = nMax + 1
s = Right(Str(nMax), Len(Str(nMax)) - 1)
If Len(s) > 8 Then
  s = "Overflow"
  MsgBox ("Папка переполнена!" & vbCrLf & "Удалите все файлы с расширением .txt и сформируйте отчёт заново")
End If
num = String(8 - Len(s), "0") + s
If add Then NextNum = num Else NextNum = s
End Function
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Порядковый номер файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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