Страницы: 1
RSS
автоматическое обновление файла, автоматическое обновление файла excel
 
Добрый день. Подскажите, в какую сторону смотреть?
Есть файл экселя, лежит в одном месте, называется одинаково. Его надо обновлять (актуализировать данные из сторонних источников) и сохранять два раза в день по расписанию.
Хочется автоматизировать.
Какую-нибудь приблуду, которая обновляет файл, а если не получится еще и журнал ошибок выдала или как-нибудь иначе отругалась.

Может кто-то встречал такое? Или в какую сторону рыть?  
 
Вариант 1 БЕСПЛАТНО ПРИ НАЛИЧИИ ЗНАНИЙ
1. Планировщик заданий в винде настраиваете на открытие этого файла в определенное время. (гугл поможет)
2. пишите макрос для файла, с реакцией на открытие и обновление данных(с созданием журнала ошибок, и прочих ваших хотелок) и закрытие файла после обновления с сохранением.
Вариант 2 БЕСПЛАТНО БЕЗ ЗНАНИЙ НО ОЧЕНЬ ТРУДОЗАТРАТНО И ПРИДЁТСЯ ВО ВСЁ ВНИКАТЬ
1. Планировщик заданий в винде настраиваете на открытие этого файла в определенное время. (гугл поможет)
2. если не знаете как всё это написать, разбиваете задачу на большое пунктов, на каждый пункт вашего не понимания 1 вопрос - 1 тема на форуме.
Вариант 3 ПЛАТНО ОСОБО ДУМАТЬ НЕ НАДО
1.Описываем желаемое подробно насколько это получится (Тех задание)
2.Идём сюда РАБОТА ПЛАТНО создаём тему, договариваемся с исполнителем.
Изменено: Wild.Godlike - 14.09.2022 14:00:05
 
Цитата
Ga написал: Или в какую сторону рыть?
Писать подробное ТЗ и размещать в разделе "Работа". Волшебной универсальной кнопки не существует.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
написал:
Планировщик заданий в винде настраиваете на открытие этого файла в определенное время. (гугл поможет)
Спасибо за ответ!
Если я правильно поняла, почитав, планировщик именно откроет мне этот файл на компе, мне же надо, что бы все произошло в фоновом режиме. Что бы файл обновлялся самостоятельно. А так это от части хороший вариант, я настрою источники на обновление при открытии файла, но все же придется присутствовать. Как минимум сохранить и закрыть
Макрос внутри файла может работать по расписанию без открытия файла?
Видимо, мне нужно что-то стороннее, что будет открывать файл в фоновом режиме и потом сохранять его через определенное время.  
 
Цитата
написал:
Писать подробное ТЗ и размещать в разделе "Работа". Волшебной универсальной кнопки не существует.

JayBhagavan, если бы мне выделили бюджет на решение этой задачи, я бы так и поступила.

Сейчас меня скорее интересует есть ли уже готовые решения. Наверняка, это распространенное желание. Ты настроил отчет, но хочешь, что бы он без тебя актуализировался. Как в Power BI.
 
"приблуда", обновляющая файл любой структуры и з неизвестного количества источников неизвестной структуры будет иметь много настроек и должна довольно дорого стоить
а решение, приспособленное к вашим файлам, сохраняющее приемник 2 раза в день по расписанию и ведущее лог. ошибок при обновлении нужно написать
при отсутсвии денег на решение, время то у вас есть?
в зависимости от интереса к этому всему и настойчивости:
мой оптимистичный прогноз - у вас что-то получиться через месяц-два
пессимистический прогноз - может и за год не получиться
удачи!
Изменено: Ігор Гончаренко - 14.09.2022 15:29:55
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ga, у меня что-то такое наколхожено.
Сделал bat'ник с таким кодом и закинул его в планировщик. Каждый день в 5:30, он открывает мой файл, делает свои дела, сохраняет, закрывает.
Код
Call Run_macros

'запуск макроса'
Sub Run_macros()
   'запускаем Excel-процесс
   set objExcel = CreateObject ("Excel.Application")
   objExcel.Visible = true    
   Op_writ="Путь к файлу и имя файла"
   objExcel.Workbooks.Open (Op_writ)
   'запуск макроса
   objExcel.run "UpdateAll" 
   'по завершению закрываем документ. Пишем только имя файла, без пути
   objExcel.Workbooks("^_^.xlsm").Save
    objExcel.Workbooks("^_^.xlsm").Close(false)
   'закрываем Excel-процесс
    objExcel.Quit
end sub

Но надо понимать, что в Вашем случае значит "обновить файл". У меня за это отвечает макрос, который находится в файле. Я его и запускаю objExcel.run "UpdateAll".
Т.е. сложности открыть файл и закрыть по расписанию нет. Вам надо автоматизировать "обновление".
Изменено: whateverlover - 14.09.2022 16:09:08
 
Цитата
написал:
Ga, у меня что-то такое наколхожено.
Сделал bat'ник с таким кодом и закинул его в планировщик. Каждый день в 5:30, он открывает мой файл, делает свои дела, сохраняет, закрывает.
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17      Call   Run_macros       'запуск макроса'    Sub   Run_macros()         'запускаем Excel-процесс         set objExcel = CreateObject (  "Excel.Application"  )         objExcel.Visible = true             Op_writ=  "Путь к файлу и имя файла"         objExcel.Workbooks.Open (Op_writ)         'запуск макроса         objExcel.run   "UpdateAll"         'по завершению закрываем документ. Пишем только имя файла, без пути         objExcel.Workbooks(  "^_^.xlsm"  ).Save          objExcel.Workbooks(  "^_^.xlsm"  ).Close(false)         'закрываем Excel-процесс          objExcel.Quit    end sub   
 
Но надо понимать, что в Вашем случае значит "обновить файл". У меня за это отвечает макрос, который находится в файле. Я его и запускаю objExcel.run "UpdateAll".
Т.е. сложности открыть файл и закрыть по расписанию нет. Вам надо автоматизировать "обновление".
Большое спасибо, с этим уже можно что-то делать! Мне надо просто "нажать "обновить все"", думаю, что найду как.
 
Цитата
Ga написал:
Мне надо просто "нажать "обновить все"",
Код
ActiveWorkbook.RefreshAll
 
Цитата
написал:
Цитата
Ga написал:
Мне надо просто "нажать "обновить все"",
 
Код
    [URL=#]?[/URL]       1      ActiveWorkbook.RefreshAll   
 
Супер! Большое спасибо!
 
Прием
 
можно попробоать настроить потоки открытия файла через power automate desktop, а дальше макрос. А как прописать в макрос закрытие и сохранение только после того как обновяться данные ? А то получается , начинает оновление и тут же закрывается файл.
 
Цитата
New написал:
ActiveWorkbook.RefreshAll
только надо очень хорошо понимать, что RefreshAll по умолчанию в фоновом режиме обновляет данные(отдельные запросы можно настроить на обновление не в фоне, но это ручная работа). Или писать код с циклом по каждому запросу/подключению с принудительным обновлением не в фоне. Иначе есть большой шанс, что файл закроется раньше, чем все обновит :)
Изменено: Дмитрий(The_Prist) Щербаков - 25.09.2023 16:54:26
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
есть большой шанс, что файл закроется раньше, чем все обновит
По сути так и происходит. Нужен видимо макрос на таймер по закрытию, где то здесь попадались такие макросы  
 
Константин,
боюсь, что с таймером могут быть проблемы.
Можно использовать код Дмитрий(The_Prist) Щербаков из статьи: https://www.excel-vba.ru/chto-umeet-excel/sobrat-dannye-s-fajlov-zashhishhennyx-parolem-powerquery/
Код
    For Each oc In ThisWorkbook.Connections
        'запоминаем значение обновления в фоне для запроса
        IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
        'выставляем принудительно ждать завершения запроса
        oc.OLEDBConnection.BackgroundQuery = False
        'обновляем запрос
        oc.Refresh
        'возвращаем обновление в фоне в первоначальное состояние
        oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
Изменено: evgeniygeo - 27.09.2023 08:52:27
 
evgeniygeo, Вроде с таймером заработало, сохраняет и закрывает. Ещё вопрос, закрывает книгу, а Excel остается, в общем то ни чего страшного, но хотелось бы чтобы полностью с экрана закрывался? И ещё вопрос, насторил запуск через планировщик, может ли запускаться этот файл и сворачиваться или в фоне работать?  
 
Константин,
сделайте VBS и запускайте его с помощью планировщика, там можно скрыть работу excel:

Код
objExcel.Visible = False
 
почему стало выскакивать subscript out of range run time error 9 ?


P.s. разобрался
Изменено: Константин - 11.10.2023 10:18:46
Страницы: 1
Наверх