Макрос сохранения файла excel с датой

 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Ребята, добрый день!
Хочу в конце своего макроса добавить строчку, которая будет сохранять файл с Названием «Прайс 2013-09-19»
в формате Эксель 2003-2007,дата всегда сегодняшняя, добавляю следующую строчку в макрос:

ActiveWorkbook.SaveAs Filename:=(«Прайс & TEXT(TODAY(),»»ГГГ-ММ-ДД»), «.xls»

Не хочет работать,что я делаю не так?

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#2

19.09.2013 16:44:50

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#4

19.09.2013 17:51:50

А так:

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
ActiveWorkbook.SaveAs Filename:=strNewName

или

Код
ActiveWorkbook.SaveAs Filename:="Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Работает,спасибо!

Только вот когда открываю этот сохраненный файл, то Эксель выдает сообщение:
«Действительный формат открываемого файла отличается от указываемого  его расширением имени файла.
Перед открытием данного файла убедитесь,что он не поврежден и получен из надежного источника» (((

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Запишите рекордером сохранение в этом формате, используйте код.
У меня тут 2003 — не могу проверить. А у Вас вероятно 2007-13.

 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Нашла выход из ситуации:

ActiveWorkbook.SaveAs Filename:=(«Прайс » & Format(Date, «YYYY-MM-DD») & «.xls»), FileFormat:=xlNormal

 

SLAVICK

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

#8

20.09.2013 17:37:41

А если расширение файла другое (например xlsm,xlsb ….)? … нужно определить его:

Код
расширение_файла = (Split(ActiveWorkbook.Name, ".")(UBound(Split(ActiveWorkbook.Name, "."))))

Потом уже можно смело сохранять:

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & "." & расширение_файла
ActiveWorkbook.SaveAs Filename:=strNewName

или

Код
ActiveWorkbook.SaveAs Filename:="Прайс " & Format(Date, "YYYY-MM-DD") & "." & расширение_файла

Изменено: SLAVICK20.09.2013 17:39:38

Skip to content

Как создать резервную копию книги с сегодняшней датой

На чтение 2 мин. Просмотров 2.7k.

Что делает макрос: Макрос позволяет создать резервную копию книги и сохраняет ваш файл в папке с сегодняшней датой.

Содержание

  1. Как это работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как это работает

Хитрость данного макроса заключается в сопоставлении частей файла. Новое имя файла состоит из трех частей: путь, исходный файл и сегодняшняя дата.

Путь определяем с помощью свойства Path объекта ThisWorkbook.
Второй частью нового файла является исходное имя файла. Мы используем свойство Name объекта ThisWorkbook.
Текущую дату берем с помощью функции Date. Вы заметите, что мы форматируем дату (Format (Date, «мм-дд-гг»)). Это происходит потому, что по умолчанию функция даты возвращает мм / дд / гггг. Мы используем дефис вместо слэша, иначе это вызовет ошибку при попытке сохранить файл (Windows не позволяет использовать «/» в именах файлов.)

Код макроса

Sub SozdatRezervnuyuKopiyu()
'Сохранить книгу с новым именем
ThisWorkbook.SaveCopyAs _
Filename:=ThisWorkbook.Path & "" & _
Format(Date, "mm-dd-yy") & " " & _
ThisWorkbook.Name
End Sub

Как работает этот код

Используем одну единственную строку, которая с помощью метода SaveCopyAs создает новый имя файла и использует метод для сохранения файла.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Макрос для «Сохранить как» *имя файла + текущая дата*

ArkaIIIa

Дата: Вторник, 07.10.2014, 12:59 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Добрый день, уважаемые знатоки VBA!

Подскажите, пожалуйста, код для макроса, со следующей логикой:
При нажатии условной «кнопки» файл, в модуле которого есть этот макрос, сохраняется через функцию «Сохранить как» с именем исходного файла + текущей датой, в той же самой папке.
Пример не прикладываю, т.к. ответ на вопрос не зависит от содержимого книги.

Заранее благодарю всех откликнувшихся!

 

Ответить

_Boroda_

Дата: Вторник, 07.10.2014, 13:20 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Sub tt()
      ThisWorkbook.SaveAs (ThisWorkbook.Path & «» & Replace(ThisWorkbook.Name, «.xls», «_» & Format(Date, «YYYYMMDD») & «.xls»))
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

ArkaIIIa

Дата: Вторник, 07.10.2014, 13:23 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

_Boroda_
Да, Александр, именно то, что нужно! Спасибо!

 

Ответить

Rioran

Дата: Вторник, 07.10.2014, 13:42 |
Сообщение № 4

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, привет.

Предлагаю такой код. Можно всё в одну строчку сделать, развернул только для наглядности.

UPD: Опять Александр самый быстрый =)

[vba]

Код

Sub Rio_ReSave_Spell()

‘Author:    Roman Rioran Voronov
‘Date:      the 7-th of October, 2014
‘Feedback:  voronov_rv@mail.ru

‘Макрос позволяет сохранить книгу в той же папке, где книга сохранена сейчас
‘К названию сохраняемой книги добавляется «_[Дата без точек].[Формат]», по умолчанию .xlsb

Dim strA As String ‘Текущий адрес книги на ПК
Dim strB As String ‘Имя книги без формата
Dim strC As String ‘Формирование даты + формата

strA = ThisWorkbook.Path & «»
strB = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, «.xl») — 1)
strC = «_» & Replace(Str(Date), «.», «») & «.xlsb»

‘Сшиваем заготовку из частей
ThisWorkbook.SaveAs Filename:=strA & strB & strC

End Sub

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranВторник, 07.10.2014, 13:58

 

Ответить

Alex_ST

Дата: Вторник, 07.10.2014, 23:32 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Ну и я свои пять копеек внесу.
Следующие процедуры не привязаны к версии офиса.
Да и дата с секундами. Чтобы можно было по несколько раз в день «предохраняться»
Эта процедура точно «по заданию» — пересохранение файла под другим именемА это «вариация на тему» — сохранение копии рабочего файла. А сам файл не переименовывается.

А вообще-то, если бы ArkaIIIa воспользовался поиском по форуму, то в Готовых решениях он на первой же странице без труда нашёл бы топик Макрос Save_Copy_As, в котором рассматриваются варианты.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STВторник, 07.10.2014, 23:36

 

Ответить

Egon

Дата: Пятница, 07.04.2017, 08:55 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день! Очень полезный макрос, вот только я не смог найти как прописать так, чтобы он ко всему прочему сохранял по определенному пути? Заранее спасибо!

 

Ответить

Pelena

Дата: Пятница, 07.04.2017, 09:11 |
Сообщение № 7

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Вместо ThisWorkbook.Path пропишите «определенный путь»


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Alex_ST

Дата: Пятница, 07.04.2017, 13:25 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

А ещё лучше не в ручную прописывать путь, а глянуть по ссылке на Макрос Save_Copy_As



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

stepan190

Дата: Вторник, 05.05.2020, 21:39 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Alex_ST,
Применил ваш подход

[vba]

Код

With ThisWorkbook
.SaveCopyAs (.Path & «» & Replace(.Name, «.» & Split(.Name, «.»)(1), «_» & Format(Now, «YYYY-MM-DD_hh.mm.ss») & «.» & Split(.Name, «.»)(1)))

[/vba]
У меня из макроса сохраняется файл с другим именем, но после того, как я хочу его удалить например через Total commwnder вызывается критическая ошибка

К сообщению приложен файл:

__.docx
(93.2 Kb)


Stepan

Сообщение отредактировал stepan190Вторник, 05.05.2020, 21:40

 

Ответить

Hugo

Дата: Вторник, 05.05.2020, 22:20 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

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


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Alex_ST

Дата: Среда, 06.05.2020, 12:22 |
Сообщение № 11

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Попробуйте узнать, какой процесс блокирует созданный Вами файл.
Проще всего для этого можно поставить ОЧЕНЬ ПОЛЕЗНУЮ утилиту Unlocker и попытаться разблокировать файл.
Unlocker выдаст окно со списком процессов, «держащих» файл.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STСреда, 06.05.2020, 12:24

 

Ответить

0 / 0 / 0

Регистрация: 22.08.2016

Сообщений: 2

1

Сохранение файла с датой в названии и замена параметра СЕГОДНЯ

22.08.2016, 22:17. Показов 9887. Ответов 3


Студворк — интернет-сервис помощи студентам

Здравствуйте, помогите пожалуйста создать макрос, который при сохранении будет добавлять к названию файла текущую дату, а лучше полностью заменять на нее. И еще один вопрос: возможно ли сделать так, чтобы при сохранении в ячейке, где задана формула СЕГОДНЯ, содержимое ячейки менялось на эту дату. Например, если сохранили файл 22.08.16, а просматривают 23.08.16, в ячейки вместо СЕГОДНЯ(), стояло 22.08.16? Буду очень благодарен, если кто-то поможет с этим.



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

22.08.2016, 23:49

2

Скопируйте строго в модуль книги ThisWorkbook(ЭтаКнига)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim iFileName$, iNewFileName$, iPos%
    
    If InStr(Me.Name, Date) = 0 Then
       Cancel = True: Application.EnableEvents = False
       
       Me.Worksheets("Лист1").Range("A1") = Date
       'Укажите имя/индекс рабочего листа, а также адрес ячейки,
       'где должна быть дата сохранения книги
       
       iFileName = Me.FullName: iPos = InStrRev(iFileName, ".")
       iNewFileName = Me.Path & "" & Date & Mid(iFileName, iPos)
       Me.SaveAs iNewFileName: Kill iFileName
       
       Application.EnableEvents = True
    End If
End Sub



1



0 / 0 / 0

Регистрация: 22.08.2016

Сообщений: 2

23.08.2016, 01:12

 [ТС]

3

pashulka,
Спасибо большое, вроде работает, вот только заменяет дату и изменяет название текущего файла, а хотелось бы чтобы сохранял копию в архив, а этот файл можно было бы закрыть без изменений.



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

23.08.2016, 07:59

4

Если нужен архив, то можете удалить/закомментировать :

Visual Basic
1
: Kill iFileName



0



Когда мы работаем с книгой, иногда нам нужно добавить текущую дату и время при сохранении файла. Возможно, вы можете ввести дату и время после имени файла в диалоговом окне «Сохранить как», но здесь я могу познакомить вас с простым трюком для автоматического выполнения этого задания.

Сохраните файл Excel с датой и временем, используя код VBA


стрелка синий правый пузырь Сохраните файл Excel с датой и временем, используя код VBA

За исключением ввода даты и времени вручную, следующий код VBA может помочь вам автоматически добавить текущую дату и время к имени файла. Пожалуйста, сделайте следующие шаги:

1. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: автоматическое добавление даты и времени к имени файла

Sub filesave()
'Update 20141111
ActiveWorkbook.SaveAs ("C:UsersdtDesktopmy informationnov-kte-data " & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xlsx")
End Sub

3, Затем нажмите F5 ключ для запуска этого кода, текущая дата и время были добавлены после имени вашей активной книги, см. снимок экрана:

документ-сохранить-файл-с-датой-1

Внимание: В приведенном выше коде вам нужно изменить путь к файлу и имя по своему усмотрению.


Статьи по теме:

Как сохранить файл Excel со значением ячейки?

Как показать путь к файлу в строке заголовка или панели инструментов в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Макрос сохранения файла excel в файл
  • Макрос сохранение файла excel по времени
  • Макрос создающий папку excel
  • Макрос создать таблицу в word
  • Макрос создать столбец в excel