Страницы: 1
RSS
Открытие файла с максимальным значением в имени
 
Доброе время суток. Прошу помочь мне в написании маски. Суть в том, что в макросе есть строчки для открывания файлов. Эти файлы будут иметь цифровое обозначение. Допусти "Zvonok 1" и до бесконечности "Zvonok n". Какие строки использовать, дабы заставить макрос открывать файл с наибольшим значением в имени файла?  
 
Здравствуйте.Как вариант можно использовать строчки, в которых вычленяется имя файла, из него достается номер и сравнивается с ранее заполненным значением. Если больше - значение переписывается, если нет - то нет. Как файлы кончились - имеем наибольший номер. Потом из этого наибольшего номера, подстроки "Zvonok" путем объединения можно получить имя файла.
Кому решение нужно - тот пример и рисует.
 
Спасибо за ответ, можешь это как то в строчках макроса написать, если не трудно? А то я не сильно в этом разбираюсь. Только начал учиться  и трудно достается это учение
 
Покажите макрос свой где есть строчки "для открывания файлов".
И да, мы тут на "ты" только с теми, с кем долго и вдумчиво бухали. :)
Кому решение нужно - тот пример и рисует.
 
Цитата
SicVolo написал: можешь
Цитата
Пытливый написал: Покажите
Найдите различия...
 
Код
' Открытие файла
        Dim WB1 As Workbook
        Set WB1 = Application.Workbooks.Open("D:\Служебное\2\Макрос\Zvonok.xls")
 WB1.Close

Нашел на просторах интернета, строчки работают, только подтверждать закрытие приходится файла, типо  сохранить изменения или нет.

Пардоньте, бухать меня больше не тянет. Как рукой сняло))
Цитата
vikttur написал: Найдите различия...
Один на ты, второй на вы
 
Пример Вы не показали, проверяйте сами (Писал "на  коленке", могут быть ошибки)
Код
Sub OpenMax()
Dim sPath As String, FName As String
Dim lNum  As Long, lMax As Long
    sPath = ThisWorkbook.Path & "\" ' путь к папке
    sFName = Dir(sPath & "*.xlsх", vbDirectory) ' имя книги

    Do While sFName = "" ' по именам книг в папке
        If sFName = "Zvonok*" Then ' нужная книга
            lNum = Split(Replace(sFName, ".", " "), " ")(1) ' номер книги
            If lMax < lNum Then lMax = lNum
        End If
        
        sFName = Dir ' следующий файл
    Loop
    
    Set wBook = Workbooks.Open(Filename:=sPath & "Zvonok " & lMax & ".xlsх")  ' открываем книгу
    Set wBook = Nothing ' освобождаем память
End Sub

В имени файла не должно быть точек, кроме точки перед расширением.

Цитата
подтверждать закрытие приходится файл
Вы просии только открытие...
 
Цитата
vikttur написал: sPath = ThisWorkbook.Path & "" ' путь к папке
Уточните пожалуйста, там где символ \ в " " надо вписывать путь к файлу? Например так?
sPath = ThisWorkbook.Path & "D:\Служебное\2\Макрос\Zvonok.xls" ' путь к папке
Или мне надо будет указать только путь к папке?

Цитата
vikttur написал: sFName = Dir(sPath & "*.xlsх", vbDirectory) ' имя книги
В * указывать наименование файла? Пример:
sFName = Dir(sPath & "Zvonok.xlsх", vbDirectory) ' имя книги
Или вообще ничего добавлять ненужно?

Цитата
vikttur написал: Вы просии только открытие...
Вы не могли бы подсказать строчки для закрытия, без подтверждения? Не учел немного
 
Закрытие:
Код
wBook.Close

Перед открытием книги нужно отключить сисемные сообщения (Application.DisplayAlerts). После работы с файлом включить. Примеров много.

ThisWorkbook.Path & "\" - путь к папке с книгой, в которой находится макрос.  "\" - разделитель директорий (в данном случае -  директории и имени файла. Имя будет подставлено).
sPath & "*.xlsх", vbDirectory - "*" любое количество символов. Строка состоит из указанного пути, неизвестного имени файла и расширения этого файла. Добавлять ничего не нужно, ниже в цикле перебираются имена книг.
 
Спасибо Вам большое, очень подробно все расписали.
Разрешите уточнить у Вас, я могу дать имя  Set wBook1=....  ?
Цитата
vikttur написал:
Set wBook = Workbooks.Open(Filename:=sPath & "Zvonok " & lMax & ".xlsх")  ' открываем книгу
Так как будет несколько книг открываться.

Так же и закрыть ее
wBook1.Close
 
Если книги будут открываться последовательно, то можно применить одну переменную.
Если открываются более одной - непонятно, зачем? Переместить работу с книгами в цикл

Код
    Do While sFName = "" ' по именам книг в папке
         ......
        Set wBook = Workbooks.Open(Filename:=sPath & "Zvonok " & какой-то номер & ".xlsх")  ' открываем книгу
        ' здесь работаем с книгой
        Set wBook = Nothing ' освобождаем память
 
        sFName = Dir ' следующий файл
    Loop
 
Доброе утро! Посмотрите пожалуйста макрос. Я когда вставляю Ваши строчки, он ругаться начинает на момент
Цитата
vikttur написал:
sFName = Dir(sPath & "*.xlsх", vbDirectory) ' имя книги
Цитата
SicVolo написал:
' Открытие файла        Dim WB1 As Workbook        Set WB1 = Application.Workbooks.Open("D:\Служебное\2\Макрос\Zvonok.xls")
Вот эти строчки я меняю на Ваши.
Цитата
vikttur написал:
"\"
Вот сюда вставляю путь к папке. D:\Служебное\2\Макрос\

И в самом конце, посмотрите пожалуйста. При копировании файлов из Zvonok или Export, я делаю активным тот или иной файл. Их как мне переименовать? Они же с цифрами будут?  
Страницы: 1
Читают тему
Наверх