title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Workbook.SaveCopyAs method (Excel) |
vbaxl10.chm199146 |
vbaxl10.chm199146 |
excel |
Excel.Workbook.SaveCopyAs |
84f58488-6a2b-7fef-1472-e1b9771a60b0 |
05/29/2019 |
medium |
Workbook.SaveCopyAs method (Excel)
Saves a copy of the workbook to a file but doesn’t modify the open workbook in memory.
Syntax
expression.SaveCopyAs (FileName)
expression A variable that represents a Workbook object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
FileName | Required | Variant | Specifies the file name for the copy. |
Example
This example saves a copy of the active workbook.
ActiveWorkbook.SaveCopyAs "C:TEMPXXXX.XLS"
[!includeSupport and feedback]
Сохранение файла рабочей книги Excel, существующего или нового, с помощью кода VBA. Методы Save и SaveAs объекта Workbook, параметр SaveChanges метода Close.
Сохранение существующего файла
Сохранить существующий открытый файл рабочей книги Excel из кода VBA можно несколькими способами. В примерах используется выражение ActiveWorkbook, которое может быть заменено на ThisWorkbook, Workbooks(«ИмяКниги.xlsx»), Workbooks(myFile.Name), где myFile — объектная переменная с присвоенной ссылкой на рабочую книгу Excel.
Простое сохранение файла после внесенных кодом VBA Excel изменений:
Сохранение файла под другим именем (исходная рабочая книга будет автоматически закрыта без сохранения внесенных изменений):
ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Сохранить файл рабочей книги можно перед закрытием, используя параметр SaveChanges метода Close со значением True:
ActiveWorkbook.Close SaveChanges:=True |
Чтобы закрыть файл без сохранения, используйте параметр SaveChanges метода Close со значением False:
ActiveWorkbook.Close SaveChanges:=False |
Сохранение файла под другим именем при закрытии рабочей книги:
ActiveWorkbook.Close SaveChanges:=True, Filename:=«C:ТестоваяНоваяКнига.xlsx» |
Если в примерах с методом Close параметр SaveChanges пропустить, будет открыто диалоговое окно с запросом о сохранении файла.
Новая книга сохраняется с указанием полного имени:
Workbooks.Add ActiveWorkbook.SaveAs Filename:=«C:ТестоваяНоваяКнига.xlsx» |
После этого к новой книге можно обращаться по имени: Workbooks ("НоваяКнига.xlsx")
.
Если не указать полное имя для сохраняемого файла:
Workbooks.Add ActiveWorkbook.Save |
тогда новая книга будет сохранена с именем и в папке по умолчанию, например: Книга1.xlsx, Книга2.xlsx, Книга3.xlsx и т.д. в папке «Документы».
Создание резервных копий ценных файлов
При работе с некоторыми особо ценными файлами, бывает необходимо периодически в течение рабочего дня сохранять его промежуточные версии, чтобы, при необходимости, иметь возможность к ним вернуться. Выполнять постоянно вручную команды «Файл — Сохранить как» утомительно, да и случайно можно вместо «Сохранить как» нажать на «Сохранить», похоронив этим большой кусок работы.
Если у вас Excel 2010, то кроме стандартного автосохранения у вас должна работать система версий — каждый раз при автосохранении Excel делает отдельную копию вашего текущего файла и (даже!) при выходе из программы и отрицательном ответе на вопрос «Сохранить изменения в файле?» все равно сохраняет временную копию. Добраться до этих временных копий можно через вкладку Файл — Сведения — Версии (File — Properties — Versions):
Для своих проектов я в итоге пришел к другому решению — написал макрос, который сохраняет текущую книгу в заданную папку, добавляя к имени книги текущую дату и время в формате ДД-ММ-ГГ ЧЧ-ММ (например Мой проект 12-10-12 07-35). Периодически запуская этот макрос на ключевых этапах работы с файлом, я получаю список из энного количества файлов-версий рабочей книги и, соответственно, легко могу откатиться к нужному варианту в прошлом.
Откройте редактор Visual Basic, выбрав на вкладке Разработчик — Редактор Visual Basic (Developer — Visual Basic Editor) или нажав ALT+F11. Вставьте через меню Insert — Module новый пустой модуль и скопируйте туда текст этого макроса:
Sub Backup_Active_Workbook() Dim x As String strPath = "c:TEMP" 'папка для сохранения резервной копии On Error Resume Next x = GetAttr(strPath) And 0 If Err = 0 Then ' если путь существует - сохраняем копию книги, добавляя дату-время strDate = Format(Now, "dd-mm-yy hh-mm") FileNameXls = strPath & "" & "Мой проект" & " " & strDate & ".xls" 'или xlsm ActiveWorkbook.SaveCopyAs Filename:=FileNameXls Else 'если путь не существует - выводим сообщение MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical End If End Sub
Естественно, путь к папке (C:TEMP) и имя файла (Мой проект) надо заменить на свои.
Если ваша папка для сохранения находится на сетевом диске, то ее адрес можно прописать, используя IP-адрес сервера, например:
strPath = "\192.168.1.1Папка для бэкапов"
Еще одно, возможно, полезное дополнение в том, что имя файла может быть не постоянным, а браться из заданной ячейки листа, где его либо вводит пользователь, либо оно автоматически формируется формулами (например, функцией СЦЕПИТЬ и т.д.). Тогда необходимо будет чуть подправить следующую строку:
FileNameXls = strPath & "" & Sheets("Лист1").Range("A1").Value & " " & strDate & ".xls"
Предполагается, что имя файла берется с листа Лист1 из ячейки А1.
Ссылки по теме
- Автоматический бэкап в заданную папку с помощью надстройки PLEX
- Что такое макросы, куда вставлять код макроса на VBA, как их использовать?
SaveCopyAs Method of Workbook Object VBA
‘SaveCopyAs’ method of workbook object is used to saves a copy of the workbook as a file but does not modify or change the open workbook. Please find the more information about SaveCopyAs Workbook method.
- Why we need to SaveCopyAS a Workbook using VBA?
- VBA SaveCopyAS Workbook – Syntax
- VBA SaveCopyAS Workbook: Example 1
- VBA SaveCopyAS Workbook – Instructions
Why we need SaveCopyAS in Workbook using VBA?
Sometimes we may want to save the workbook with changes and we don’t want to modify the opened workbook. So only we need to use ‘SaveCopyAs’ method of workbook object.
VBA SaveCopyAS Workbook – Syntax
Here is the example syntax to saves a copy of Workbook using VBA.
Workbooks(“Your Workbook Name”).SaveCopyAs(
Where Filename: It is an Optional parameter. It will specifies the workbook name to save the copy. But to avoid problems always better to declare the filename. Because if it uses the current file name to save the file in the current folder since the workbook might be open.
VBA SaveCopyAS Workbook:Example 1
Please find the below example, It will show you saveCopyas workbook method.
Sub Workbook_SaveCopyAs() ThisWorkbook.SaveCopyAs ThisWorkbook.Name & "_Ver1" End Sub
VBA SaveCopyAS Workbook – Instructions
- Open an Excel Workbook
- Press Alt+F11 to Open VBA Editor
- Insert a Module from Insert Menu
- Copy the above code for activating a range and Paste in the code window(VBA Editor)
- Save the file as macro enabled workbook
- Press ‘F5’ to run it or Keep Pressing ‘F8’ to debug the code line by line.
- You can find saved workbook in the following location: ThisWorkbook.Name & “_Ver1”.
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
-
-
- In this topic:
-
- Why we need SaveCopyAS in Workbook using VBA?
- VBA SaveCopyAS Workbook – Syntax
- VBA SaveCopyAS Workbook:Example 1
- VBA SaveCopyAS Workbook – Instructions
VBA Reference
Effortlessly
Manage Your Projects
120+ Project Management Templates
Seamlessly manage your projects with our powerful & multi-purpose templates for project management.
120+ PM Templates Includes:
One Comment
-
brij
March 18, 2020 at 10:14 PM — Replyhi,
thanks but savecopy as method throws error when opening the backup copy of excel ,how to avoid this.
Effectively Manage Your
Projects and Resources
ANALYSISTABS.COM provides free and premium project management tools, templates and dashboards for effectively managing the projects and analyzing the data.
We’re a crew of professionals expertise in Excel VBA, Business Analysis, Project Management. We’re Sharing our map to Project success with innovative tools, templates, tutorials and tips.
Project Management
Excel VBA
Download Free Excel 2007, 2010, 2013 Add-in for Creating Innovative Dashboards, Tools for Data Mining, Analysis, Visualization. Learn VBA for MS Excel, Word, PowerPoint, Access, Outlook to develop applications for retail, insurance, banking, finance, telecom, healthcare domains.
Page load link
3 Realtime VBA Projects
with Source Code!
Go to Top
Skip to content
Как создать резервную копию книги с сегодняшней датой
На чтение 2 мин. Просмотров 2.7k.
Что делает макрос: Макрос позволяет создать резервную копию книги и сохраняет ваш файл в папке с сегодняшней датой.
Содержание
- Как это работает
- Код макроса
- Как работает этот код
- Как использовать
Как это работает
Хитрость данного макроса заключается в сопоставлении частей файла. Новое имя файла состоит из трех частей: путь, исходный файл и сегодняшняя дата.
Путь определяем с помощью свойства 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 создает новый имя файла и использует метод для сохранения файла.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.