Сохранение Excel файла из макроса
Здравствуйте!
Каждый день создается файл .xlsx в названии которго изменяется дата создания. Например, сегодня - "FIC_09.10.2020", завтра - "FIC_10.10.2020". Создал макрос, который форматирует этот файл, сохраняет его и закрывает. Но понадобилось перед закрытием сохранить этот файл еще и на другой носитель (USB). Функция "Запись макроса" не помогда, так как макрос запоминает команду как "ChDir "I:\ABC (перенос) ActiveWorkbook.SaveAs Filename:="I:\ABC\FIC_10.10.2020 и т.д.". Но завтра дата изменится и макрос выдаст ошибку. Пролистал книги, но ничего похожего не нашел. Подскажите, пожалуйста: как написать команду, чтобы файл каждый день сохранялся под новым именем (с измененной датой). Спасибо С уважением... |
mastertm, упакуйте в архив всё, что у Вас сейчас есть, каковой приложите к сообщению.
|
Вложений: 1
Я понимаю задачу так: имеем рабочую книгу, например, MyMacros.xlsm, содержащую макрос(ы) для обработки файлов, например, вида FIC_дд.мм.гггг.xlsx. То есть, макрос(ы) хранятся в отдельной книге, обрабатывают другие книги указанного вида.
Вот пример двух макросов.
Код:
Sub MyMacros() MyMacros обрабатывает файл текущего дня, MyDial позволяет выбрать файл для обработки. FileInPref = "Z:\Box_In\FIC_" - путь и префикс исходных файлов BoxOut = "Z:\Box_Out" - папка для записи копии обработанного файла Обработку Вашей рабочей книги лучше выделить в отдельную процедуру, я это сделал как пример в процедуре Processing Прикрепляю пример книги с макросами. Уберите расширение .txt |
Iska и megaloman спасибо, что откликнулись!
Макрос сохранен в отдельной книге. Запускается файл с макросом, затем исходный файл, который становится активным. Из этого исходного файла запускается макрос, который производит форматирование содержимого (приводит в читабельный вид). В конце макроса записал: ActiveWorkbook.Save (файл сохраняется в ту папку, из которой был вызван) ActiveWorkbook.SaveAs "I:\ABC\xxxxx" ActiveWindow.Close (файл закрывается) Если запустить макрос в таком виде, файл сохранится на диск I, в папку АВС с именем ххххх.xlsx/ Если запустить в виде: ActiveWorkbook.SaveAs "I:\ABC\" - выдает ошибку. Если запустить в виде: ActiveWorkbook.SaveAs "I:\ABC\*.xlsx" - выдает ошибку. Если запустить в виде: ActiveWorkbook.SaveAs "I:\ABC\*.*" - выдает ошибку. То есть название файла нужно вводить! Мне же нужно, чтобы файл сохранялся под исходным именем автоматом. Вообще-то, конечно, не проблема вручную скинуть на флешку. Но интересно решить эту, казалось бы, простую задачу. Спасибо Iska, Вам отдельное спасибо. Каждый раз вы приходите мне на помощь. Я два или три раза создавал темы. megaloman, спасибо за приведенный листинг, но это чересчур сложно. Я надеялся на простое решение. Ваше решение сугубо профессиональное, а я - простой пользователь. С уважением... |
Цитата:
Цитата:
Цитата:
Цитата:
|
Я после этого:
Цитата:
|
Цитата:
Цитата:
Код:
ActiveWorkbook.SaveAs "I:\ABC\" & ActiveWorkbook.Name Цитата:
Цитата:
Цитата:
|
a_axe - браво!
Всем - здравствуйте! Поподробнее обо всем. Каждый день скачиваю данные с десяти узлов с параметрами работы в виде файла .xlsx. Эти десять файлов нужно привести в читабельный вид. Для этого написал макрос: Sub Macros1ALL() ' ' Macros1 ' For i = 1 To 10 ' тут производится форматирование ActiveWorkbook.Save ActiveWindow.Close Next i End Sub Сохраняю макрос и не забываю указать, что он находится в "Все открытые книги". Запускаю файл с макросом, затем в проводнике выделяю все 10 файлов и нажимаю "Открыть". Последний открытый файл становится "ActiveWindow". Из этого файла выбираю: Разработчик-Макросы-Macros1-Выполнить. Все прекрасно работает, файлы сохраняются в той папке, откуда были вызваны . Проблема была в том, что нужно было сохранять эти файлы еще и на USB-диск. Сегодня утром нашел (до того как зашел на форум - a_axe опередил): https://docs.microsoft.com/ru-ru/off...-network-drive После этого макрос принял вид: Sub Macros2GALL() ' ' Macros1 ' For i = 1 To 10 ActiveWorkbook.Save MyFile = ActiveWorkbook.Name ActiveWorkbook.SaveAs Filename:="I:\CG\KPR\" & MyFile ActiveWindow.Close Next i End Sub В своих поисках я исходил из следующего: не может быть, чтобы для выполнение такой рутинной операции было необходимо вызывать целую процедуру. Должен был быть более простой путь. Разработчики пакета Office не могли об этом не подумать! Я скачал и исследовал несколько книг по VBA-программированию, но ни одна из них мне не помогла. Зато помогли мне вы, мои друзья. Надеюсь, я могу Вас так назвать. Всем большое спасибо. Удачи! Пожалуйста, научите напоследок как ставить благодарности. С уважением... Всех поблагодарил! Всем спасибо! |
Вложений: 1
mastertm, Вот вариант с возможностью выбора группы файлов (уберите только расширение txt), в макросе пропишите свои пути и вставьте свой код из макроса форматирования. Для удобства связал с макросом кнопку. Вы пишите:
Цитата:
|
mastertm, лучше использовать не макрос, а внешний WSH/PoSH скрипт. Потом просто перетаскиваете из Проводника на скрипт/ярлык на скрипт Рабочую книгу — и всё.
|
Спасибо за рекомендации.
Непременно воспользуюсь. Нужно время, чтобы разобраться. Раньше это не применял. С уважением... |
Время: 18:33. |
Время: 18:33.
© OSzone.net 2001-