Страницы: 1
RSS
Открытие нужного файла с помощью макроса, известно точное расположение файла и часть имени
 
Задумка такая:
по нажатии кнопки "обновить" из папки "Загрузки" открывается свежескачанный файл .xls
его содержимое обрабатывается и прикрепляется в "основной" файл
имя каждого нового загружаемого файла будет частично меняться, а адрес - нет
имена похожи на это
4443_20180312_150003.xls
4443_20180226_003202.xls
4443_20180219_131050.xls
4443_год&мес&деньскачивания_рандомныецифры.xls

помогите сделать умный макрос, который будет облегчать жизнь и "угадывать" какой файл я хочу открыть
по сути это всегда будет тот файл, который будет скачан "Сегодня"
 
Цитата
и "угадывать" какой файл я хочу открыть ...
... это всегда будет тот файл, который будет скачан "Сегодня"
??? ... ой, кажется... вам нужен волшебник ?
 
Alexey795, сравнивать строки умеете?
Последним файлом в данном списке будет наибольшая строка.
 
не обязательно ...
Цитата
4443_год&мес&деньскачивания_рандомныецифры.xls
... что то означает ? ... полностью случайные ?
Может быть, только час с секундами - уникальное значение.
 
Цитата
Alexey795 написал:
тот файл, который будет скачан "Сегодня"
будет иметь последнюю дату и время модификации или создания. Только это не игра в угадай, а четкое понимание критерия отбора.
По вопросам из тем форума, личку не читаю.
 
Цитата
будет иметь последнюю дату и время модификации или создания
Хорошо, а как мне сравнить файлы по дате или времени модификации
и как именно скомандовать, чтобы открыли файл, который был скачан последним

Цитата
... что то означает ? ... полностью случайные ? Может быть, только час с секундами - уникальное значение.
да . это время момента скачивания. уникальное значение  
Изменено: Alexey795 - 31.03.2018 17:26:02
 
Цитата
Alexey795 написал:
как мне сравнить файлы по дате или времени модификации
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=99336&am...
По вопросам из тем форума, личку не читаю.
 
ПРОСМОТРЕТЬ ВСЕ ФАЙЛЫ В ПАПКЕ и сравнивать ДАТУ СОЗДАНИЯ (5.2.2. DateCreated)http://www.script-coding.com/WSH/FileSystemObject.html#5.2.2.  
Согласие есть продукт при полном непротивлении сторон
 
Не лишним будет напомнить, что "основной" файл должен вести Log с информацией об обработанных файлах. Альтернатива - переименовывать обработанные файлы.
Владимир
 
Короче, 'умный макрос' тянет на вполне себе ТЗ, а это ТУТ
Согласие есть продукт при полном непротивлении сторон
 
Код
Sub Frankenstein()
'в столбец(1) выводит имена файлов из конкрет паки начинающихся на "4443_"
'потом сортируется не самым красивым способом
'из А1 берется то заветное имя_файла а дальше открывается/копируется/закрывается
    Dim sFolder As String, sFiles As String
         
sFolder = "C:\"
'путь менять   
     sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
     'я не понимаю как эта строка работает но решил оставить
     
     sFiles = Dir(sFolder & "4443_2018*.xls*")
     'начало у "моих" файлов одинаковое

   Worksheets(1).Select

    Do While sFiles <> ""
            Range("A1").Select
            Range("A1").Value = "4443_00000000_000000"
            'нельзя чтоб а1 была пустой :(
            
           '  MsgBox sFiles

        If Worksheets(1).Range("A1").Offset(1, 0) <> "" Then
            Worksheets(1).Range("A1").End(xlDown).Select
        End If
        
           ActiveCell.Offset(1, 0).Select
            ActiveCell.Value = sFiles
            sFiles = Dir
    Loop

    i = Worksheets(1).Range("A1").End(xlDown).Row

    'чтобы найти самый новый файл пришлось извращатся и сортировать имена в ячейках иксель
    'хотел бы я знать как сделать по другому
    'вся последующая сортировка скопирована из "запись макроса" менял только диапазон с помощью i

        ActiveWorkbook.Worksheets(1).Sort.SortFields.Clear
        ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("A6"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(1).Sort
        .SetRange Range(Cells(1, 1), Cells(i, 1))
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
   ' когда получчил имя файла наконец его открываю
   ' копирую единственный лист из файла , вставляю его ,
   ' закрываю документ без сохр, подтираю первый столбец

    Sheets(1).Select
    PathName = "C:\Users\admin\Downloads"
    Filename = Range("A1").Value
    TabName = "лист_будет_обработан_иудален"
    ControlFile = ActiveWorkbook.Name
    Workbooks.Open PathName & "\" & Filename
    ActiveSheet.Name = TabName
    Sheets(TabName).Copy After:=Workbooks(ControlFile).Sheets(1)
    Windows(Filename).Activate
    ActiveWorkbook.Close SaveChanges:=False
    Windows(ControlFile).Activate
    Sheets(1).Columns(1).Delete
End Sub
Изменено: Alexey795 - 31.03.2018 21:24:21
Страницы: 1
Наверх