|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Сохранение Excel файла из макроса |
|
|
2010 - [решено] Сохранение Excel файла из макроса
|
Новый участник Сообщения: 28 |
Здравствуйте!
Каждый день создается файл .xlsx в названии которго изменяется дата создания. Например, сегодня - "FIC_09.10.2020", завтра - "FIC_10.10.2020". Создал макрос, который форматирует этот файл, сохраняет его и закрывает. Но понадобилось перед закрытием сохранить этот файл еще и на другой носитель (USB). Функция "Запись макроса" не помогда, так как макрос запоминает команду как "ChDir "I:\ABC (перенос) ActiveWorkbook.SaveAs Filename:="I:\ABC\FIC_10.10.2020 и т.д.". Но завтра дата изменится и макрос выдаст ошибку. Пролистал книги, но ничего похожего не нашел. Подскажите, пожалуйста: как написать команду, чтобы файл каждый день сохранялся под новым именем (с измененной датой). Спасибо С уважением... |
|
Отправлено: 17:45, 19-11-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать mastertm, упакуйте в архив всё, что у Вас сейчас есть, каковой приложите к сообщению.
|
Отправлено: 19:42, 19-11-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Я понимаю задачу так: имеем рабочую книгу, например, MyMacros.xlsm, содержащую макрос(ы) для обработки файлов, например, вида FIC_дд.мм.гггг.xlsx. То есть, макрос(ы) хранятся в отдельной книге, обрабатывают другие книги указанного вида.
Вот пример двух макросов.
Sub MyMacros() FileInPref = "Z:\Box_In\FIC_" BoxOut = "Z:\Box_Out" ' Обрабатываем файл текущего дня "FIC_дд.мм.гггг.xlsx" FileIn = FileInPref + Mid(Now, 1, 10) + ".xlsx" Workbooks.Open Filename:=FileIn Call Processing 'Процедура для обработки открытой таблицы ActiveWorkbook.Save ActiveWorkbook.Close With CreateObject("Scripting.FileSystemObject") .CopyFile FileIn, BoxOut + "\" + .GetFileName(FileIn), True End With End Sub Sub MyDial() FileInPref = "Z:\Box_In\FIC_" BoxOut = "Z:\Box_Out" ' Выбираем для обработки файл из "Префикс_дд.мм.гггг.xlsx" With Application.FileDialog(msoFileDialogFilePicker) .InitialFileName = FileInPref + "*.xlsx" .InitialView = msoFileDialogViewList .AllowMultiSelect = False fileChosen = .Show If fileChosen = -1 Then FileIn = .SelectedItems(1) Workbooks.Open Filename:=FileIn Call Processing 'Процедура для обработки открытой таблицы ActiveWorkbook.Save ActiveWorkbook.Close With CreateObject("Scripting.FileSystemObject") .CopyFile FileIn, BoxOut + "\" + .GetFileName(FileIn), True End With Else MsgBox "Файл не выбран" End If End With End Sub Sub Processing() ' ==== Просто пример обработки исходного активного листа книги ========= Columns("C:C").NumberFormat = "0.00" ' ==== Конец примера обработки исходного файла ========= End Sub MyMacros обрабатывает файл текущего дня, MyDial позволяет выбрать файл для обработки. FileInPref = "Z:\Box_In\FIC_" - путь и префикс исходных файлов BoxOut = "Z:\Box_Out" - папка для записи копии обработанного файла Обработку Вашей рабочей книги лучше выделить в отдельную процедуру, я это сделал как пример в процедуре Processing Прикрепляю пример книги с макросами. Уберите расширение .txt |
------- Последний раз редактировалось megaloman, 19-11-2020 в 20:48. Отправлено: 20:35, 19-11-2020 | #3 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать 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, спасибо за приведенный листинг, но это чересчур сложно. Я надеялся на простое решение. Ваше решение сугубо профессиональное, а я - простой пользователь. С уважением... |
Последний раз редактировалось mastertm, 20-11-2020 в 09:35. Причина: Дописать благодарность Отправлено: 09:32, 20-11-2020 | #4 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата mastertm:
Цитата mastertm:
Цитата mastertm:
Цитата Iska:
|
|||||
------- Отправлено: 17:02, 20-11-2020 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я после этого:
Цитата mastertm:
|
|
Отправлено: 19:07, 20-11-2020 | #6 |
Динохромный Сообщения: 706
|
Профиль | Отправить PM | Цитировать Цитата mastertm:
Цитата mastertm:
На заявленном 2010 проверяйте сами, возможно нужно добавить & ".xlsx" (в поиске проскакивает указание расширения, у меня все прекрасно работает и без него). Цитата megaloman:
![]() Цитата mastertm:
Цитата megaloman:
![]() |
|||||
------- Отправлено: 21:28, 21-11-2020 | #7 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать 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-программированию, но ни одна из них мне не помогла. Зато помогли мне вы, мои друзья. Надеюсь, я могу Вас так назвать. Всем большое спасибо. Удачи! Пожалуйста, научите напоследок как ставить благодарности. С уважением... Всех поблагодарил! Всем спасибо! |
Отправлено: 09:39, 23-11-2020 | #8 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать mastertm, Вот вариант с возможностью выбора группы файлов (уберите только расширение txt), в макросе пропишите свои пути и вставьте свой код из макроса форматирования. Для удобства связал с макросом кнопку. Вы пишите:
Цитата mastertm:
|
|
------- Последний раз редактировалось megaloman, 23-11-2020 в 18:03. Отправлено: 15:51, 23-11-2020 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать mastertm, лучше использовать не макрос, а внешний WSH/PoSH скрипт. Потом просто перетаскиваете из Проводника на скрипт/ярлык на скрипт Рабочую книгу — и всё.
|
Отправлено: 21:57, 23-11-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Экспорт таблицы из Excel в Word с помощью макроса | Eiyb | Программирование и базы данных | 8 | 24-07-2020 08:09 | |
2007 - [решено] Сохранение excel файла | dzey | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 12-09-2016 03:48 | |
Разное - Как обратиться к закрытому файлу xls из макроса excel | zion87 | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 04-04-2013 08:52 | |
Разное - Заполнение ячеек из формы макроса Excel | zion87 | Microsoft Office (Word, Excel, Outlook и т.д.) | 7 | 03-04-2013 22:38 | |
VBS/WSH/JS - Открытие htm файла в Excel'e и применение к нему макроса | foxintel | Скриптовые языки администрирования Windows | 0 | 13-04-2010 03:40 |
|