Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2016, 06:10   #1
Фонарик2
Пользователь
 
Регистрация: 26.07.2016
Сообщений: 21
Лампочка макрос на ссылку на послендную добавленную книгу

Доброго времени суток, формучане!

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

Не знаю что написать в path чтобы он открывал последнюю книгу.

Function NameOpenedBookDialog() As String
Dim dlgOpen As FileDialog, FN As String, wb As Workbook
Set dlgOpen = Application.FileDialog(1)
dlgOpen.InitialFileName = ThisWorkbook.Path & "\"
dlgOpen.Show
If dlgOpen.SelectedItems.Count > 0 Then
FN = dlgOpen.SelectedItems(1)
Set wb = Workbooks.Open(FN)
NameOpenedBookDialog = wb.Name
End If
Set dlgOpen = Nothing
Set wb = Nothing
End Function

Буду признательна за помощь!
Фонарик2 вне форума Ответить с цитированием
Старый 26.07.2016, 07:01   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

http://excelvba.ru/code/LastFile
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 26.07.2016, 07:24   #3
Фонарик2
Пользователь
 
Регистрация: 26.07.2016
Сообщений: 21
По умолчанию Aleksandr H.

Aleksandr H. , в этом деле я чайник, попробовала вставить в path, данные со ссылки, выдает ошибки, интуитивно знаю что делаю неправильно. Можете мне помочь? получается в этот макрос нужно вставить путь на самый свежий файл в папке, он эклелевский, в примере кажется ткестук был.
Фонарик2 вне форума Ответить с цитированием
Старый 26.07.2016, 07:25   #4
Фонарик2
Пользователь
 
Регистрация: 26.07.2016
Сообщений: 21
По умолчанию

а еще мне нужно не только найти книгу, но и открыть нужно
Фонарик2 вне форума Ответить с цитированием
Старый 26.07.2016, 08:47   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Ну так пропишите выбор папки и запуск книги в процедуре ПримерИспользованияФункции_LastFile () и запустите её
Код:
Function LastFile$(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                   Optional ByVal SearchDeep As Long = 999)
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут проверены только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает полный путь к файлу, имеющему самую позднюю дату создания
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)

    Dim FilenamesCollection As New Collection    ' создаём пустую коллекцию
    Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep    ' поиск
    Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
    Dim maxFileDate As Double
    For Each file In FilenamesCollection ' перебираем все файлы среди найденных
        currFileDate = FileDateTime(file) ' считываем дату последнего сохранения
        ' проверяем очередной файл - не новее ли он предыдущих
        If currFileDate > maxFileDate Then LastFile$ = file: maxFileDate = currFileDate
    Next file
End Function
 
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                                 ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке
        Application.StatusBar = "Поиск в папке: " & FolderPath
 
        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function

Sub ПримерИспользованияФункции_LastFile()
    
    ' Ищем на рабочем столе все файлы TXT, и выводим имя самого нового файла.
    ' Просматриваются папки с глубиной вложения не более трёх.

    Dim ПутьКПапке$, СамыйПоследнийФайл$
    Dim wb As Workbook
    ' получаем путь к папке РАБОЧИЙ СТОЛ
    ПутьКПапке = GetFolder(CreateObject("WScript.Shell").SpecialFolders("Desktop"))
    ' получаем путь к самому новому файлу (проверяется дата последнего сохранения)
    СамыйПоследнийФайл$ = LastFile$(ПутьКПапке, ".xlsx", 3)
    If СамыйПоследнийФайл$ = "" Then MsgBox "Не найдено ни одного файла", vbExclamation: Exit Sub
    MsgBox СамыйПоследнийФайл$, vbInformation, "Самый свежий файл"
    Set wb = Workbooks.Open(СамыйПоследнийФайл$)
    
End Sub

Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
    .Title = "Select a Folder"
    .AllowMultiSelect = False
    .InitialFileName = strPath
    If .Show <> -1 Then GoTo NextCode
    sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 26.07.2016, 09:24   #6
Фонарик2
Пользователь
 
Регистрация: 26.07.2016
Сообщений: 21
По умолчанию Aleksandr H.

Спасибо!
Сейчас попробую
Фонарик2 вне форума Ответить с цитированием
Старый 26.07.2016, 10:03   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

положите файл в папку с выгрузками
открываейте его... (ВНИМАНИЕ! открывайте не из архива, а положите в папку с выгрузками и открывайте от туда!)
вместо него откроется самый "младший" xls-файл в папке
Код:
Private Sub workbook_open()
  Dim dt As Date, dtM As Date, pt$, fn$, f1$
  pt = ThisWorkbook.Path & Application.PathSeparator
  fn = Dir(pt & "*.xls*"):  If fn <> "" Then f1 = fn: dtM = FileDateTime(pt & f1)
  Do While fn <> ""
    If fn <> ThisWorkbook.Name Then
      dt = FileDateTime(pt & fn): If dt > dtM Then dtM = dt: f1 = fn
    End If
    fn = Dir()
  Loop
  If f1 <> "" Then Workbooks.Open pt & f1
  ThisWorkbook.Close
End Sub
удачи!
Вложения
Тип файла: rar OpenLastDateFile.rar (10.5 Кб, 14 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 26.07.2016 в 10:17.
IgorGO вне форума Ответить с цитированием
Старый 26.07.2016, 11:15   #8
Фонарик2
Пользователь
 
Регистрация: 26.07.2016
Сообщений: 21
Радость IgorGO

IgorGO СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!


работает
Фонарик2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: открыть книгу, перейти на лист, найти строку и скопировать MaxxVer Microsoft Office Excel 19 04.09.2012 11:42
Как сохранить макрос в личную книгу макросов или сделать из него надстройку? Alena0501 Microsoft Office Excel 9 17.05.2011 12:05
макрос, подкачивающий данные из текстовых файлов в книгу и сохраняющий в ней остатки по счетам malina55 Microsoft Office Excel 2 19.02.2011 02:00
Нуже макрос для копирования данных в новую книгу. zygon Microsoft Office Excel 11 17.04.2010 13:31
Макрос открывающий книгу Excel. agregator Microsoft Office Word 4 10.07.2009 21:41