Workbook.SaveAs method (Excel)
Saves changes to the workbook in a different file.
Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.
Syntax
expression.SaveAs (FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
expression A variable that represents a Workbook object.
Parameters
| Name | Required/Optional | Data type | Description |
|---|---|---|---|
| FileName | Optional | Variant | A string that indicates the name of the file to be saved. You can include a full path; if you don’t, Microsoft Excel saves the file in the current folder. |
| FileFormat | Optional | Variant | The file format to use when you save the file. For a list of valid choices, see the XlFileFormat enumeration. For an existing file, the default format is the last file format specified; for a new file, the default is the format of the version of Excel being used. |
| Password | Optional | Variant | A case-sensitive string (no more than 15 characters) that indicates the protection password to be given to the file. |
| WriteResPassword | Optional | Variant | A string that indicates the write-reservation password for this file. If a file is saved with the password and the password isn’t supplied when the file is opened, the file is opened as read-only. |
| ReadOnlyRecommended | Optional | Variant | True to display a message when the file is opened, recommending that the file be opened as read-only. |
| CreateBackup | Optional | Variant | True to create a backup file. |
| AccessMode | Optional | XlSaveAsAccessMode | The access mode for the workbook. |
| ConflictResolution | Optional | XlSaveConflictResolution | An XlSaveConflictResolution value that determines how the method resolves a conflict while saving the workbook. If set to xlUserResolution, the conflict-resolution dialog box is displayed. |
If set to xlLocalSessionChanges, the local user’s changes are automatically accepted.
If set to xlOtherSessionChanges, the changes from other sessions are automatically accepted instead of the local user’s changes.
If this argument is omitted, the conflict-resolution dialog box is displayed.
NOTE: When Excel saves a workbook to one of the CSV or text formats, which are specified by using the FileFormat parameter, it uses the code page that corresponds to the language for the system locale in use on the current computer. This system setting is available in the Control Panel > Region and Language > Location tab under Current location.
NOTE: When Excel saves a workbook to one of the CSV or text formats, which are specified by using the FileFormat parameter, it saves these formats in logical layout. If left-to-right (LTR) text is embedded within right-to-left (RTL) text in the file, or vice versa, logical layout saves the contents of the file in the correct reading order for all languages in the file without regard to direction. When an application opens the file, each run of LTR or RTL characters are rendered in the correct direction according to the character value ranges within the code page (unless an application that is designed to display the exact memory layout of the file, such as a debugger or editor, is used to open the file).
Remarks
Use strong passwords that combine uppercase and lowercase letters, numbers, and symbols. Weak passwords don’t mix these elements.
Use a strong password that you can remember so that you don’t have to write it down.
Example
This example creates a new workbook, prompts the user for a file name, and then saves the workbook.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Workbook. Save As(Object, Object, Object, Object, Object, Object, XlSaveAsAccessMode, Object, Object, Object, Object, Object) Метод
Определение
Сохраняет изменения в книге в другой файл. Saves changes to the workbook in a different file.
Параметры
Имя сохраняемого файла. The name of the file to be saved. Можно включить полный путь; если этого не сделать, Microsoft Office Excel сохранит файл в текущей папке. You can include a full path; if you do not, Microsoft Office Excel saves the file in the current folder.
Одно из значений XlFileFormat, указывающих формат файла для использования при сохранении файла. One of the XlFileFormat values that specifies the file format to use when you save the file. Для существующего файла используемым по умолчанию форматом является последний заданный для этого файла формат, для нового файла — формат используемой версии Excel. For an existing file, the default format is the last file format specified; for a new file, the default is the format of the version of Excel being used.
Строка, для которой учитывается регистр, (длиной не более 15 символов) определяющая защитный пароль, который будет назначен файлу. A case-sensitive string (no more than 15 characters) that indicates the protection password to be given to the file.
Пароль защиты от записи для данного файла. The write-reservation password for this file. Если файл сохранен с паролем и при его открытии пароль не введен, этот файл открывается только для чтения. If a file is saved with the password and the password is not supplied when the file is opened, the file is opened as read-only.
Значение true для создания файла резервной копии. true to create a backup file.
Одно из значений перечисления XlSaveAsAccessMode. One of the XlSaveAsAccessMode values.
Одно из значений перечисления XlSaveConflictResolution. One of the XlSaveConflictResolution values.
Игнорируется для всех языков в Microsoft Excel. Ignored for all languages in Microsoft Excel.
Игнорируется для всех языков в Microsoft Excel. Ignored for all languages in Microsoft Excel.
Значение true — сохранение файлов с языковыми настройками Excel (включая параметры панели управления). true saves files against the language of Excel (including control panel settings). Значение false (по умолчанию) — сохранение файлов с языковыми настройками VBA. false (default) saves files against the language of Visual Basic for Applications (VBA).
Комментарии
Visual Studio не поддерживает сохранение книги в качестве общей книги. Visual Studio does not support saving a workbook as a shared workbook.
Необязательные параметры Optional Parameters
Дополнительные сведения о необязательных параметрах см. в разделе необязательные параметры в решениях Office. For information on optional parameters, see Optional Parameters in Office Solutions.
Макрос сохранения листа Excel в файл
Данный макрос позволяет упростить процедуру сохранения активного листа в книге Excel в отдельный файл.
Для использования этого макроса на любом листе в книге Excel создайте кнопку, и назначьте ей макрос СохранитьЛистВФайл.
При запуске макроса (нажатии кнопки) будет выведено диалоговое окно выбора имени для сохраняемого файла, после чего текущий лист будет сохранён под заданным именем в выбранной папке.
Сохранение производится в формате XLS (формат Excel 2003)
Если пользователь отказался от ввода имени файла (нажал клавишу ESC или кнопку «Отмена» в диалоговом окне),
то сохранения листа в файл не происходит.
PS: Кто-то может сказать, что для сохранения листа в файл в объектной модели Excel есть метод SaveAs, применимый к объекту Worksheet.
Но, как ни странно, выполнение кода ActiveSheet.SaveAs » « приводит к сохранению книги целиком, что равносильно использованию кода ActiveWorkbook.SaveAs » «
Комментарии
Здравствуйте, макрос отлично работает, но подскажите как подправить чтобы в в файл «отчет» сохранялось два листа? Например: Лист1 и Лист9. Я сам в макросах пока еще плохо разбираюсь. Спасибо.
Спасибо. Разобрался. Нашёл ошибки в библиотеках.)
Спасибо. Всё запустил, но не работает. Пишет не найден проект или библиотека. Простите, не уточнил, поменял ещё саму систему (был XP стал Win7 x64).
Вот мой код:
Private Sub CommandButton2_Click()
On Error Resume Next
Const REPORTS_FOLDER = «C:\Users\. \. \. »
MkDir ThisWorkbook.Path & «\» & REPORTS_FOLDER
ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & «\» & REPORTS_FOLDER
FileName = [b8] & «_» & [b6] & «_» & [b4] & «_» & Format([b2], «DDMMMMYY») & «_» & [c2] & «.xlsx»
Err.Clear: Worksheets(Array(. «, «. «)).Copy: DoEvents
If Err Then Exit Sub
If ActiveWorkbook.Worksheets.Count = 2 And ActiveWorkbook.Path = «» Then
ActiveWorkbook.SaveAs FileName, xlWorkbookNormal
ActiveWorkbook.Close False
End If
End Sub
Убедитесь, что макросы вообще включены в настройках Excel.
Перед запуском файла с макросами, необходимо выполнить следующее:
Перешёл с 2007 на Office 2016, перестали работать макросы. И этот. (((
Добрый день, подскажите, пожалуйста, что надо изменить в макросе, чтобы:
1. Он копировал не весь лист целеком, а только диапазон ВИДИМЫХ ячеек (A1:L50), т.к. этот диапазон только часть отфильтрованного списка.
2. Он копировал только значения, без формул ячеек.
Здравствуйте, Игорь.
Подскажите, пожалуйста, возможно ли такое, чтобы Лист можно было сохранять не единожды (по имени в одной ячейке) а сославшись на какой-либо диапазон ячеек. Есть потребность сделать в конкретной папке количество файлов соответствующее количеству дней в месяце(отчет на каждый день). Если в диапазоне ячеек указать даты месяца и по нажатию макрос сохранял бы, файлы с именем Даты.
Можете написать макрос под заказ? Мне надо до понедельника
Напишите ваши контакты, есть несколько задач.
Дмитрий, можем сделать вам макрос под заказ.
Оформляйте заказ, прикрепляйте файл (в который надо встроить макрос), и подробно описывайте, что куда в каком виде и под каким именем сохранять.
Дело в том, что в книге порядка 20-30 листов и каждый лист необходимо сохранить в отдельные папки, соответствующие имени листа.
Сохраняю листы в JPEG формате, при помощи виртуального принтера «universal document converter» возможно ли упростить процедуру сохранения активного листа?
On Error Resume Next
Const REPORTS_FOLDER = «Двери\»
‘ название подпапки, в которую по-умолчанию будет предложено сохранить файл
MkDir ThisWorkbook.Path & «\» & REPORTS_FOLDER
‘ создаём папку для файла, если её ещё нет
ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & «\» & REPORTS_FOLDER
‘ выбираем стартовую папку
Filename = Range(«a17») & («b17») & «.xls»
‘ вывод диалогового окна для запроса имени сохраняемого файла
Dim Ar(), ArAll&(), Sh As Excel.Worksheet, n
Select Case Sheets(1).[Условие]
Case 1
Ar = Array(3)
Case Else
End Select
ActiveWorkbook.Close False
End Sub
pdfFilename = Application.DefaultFilePath & Application.PathSeparator & «имя файла» & Range(«D9»).Value & «.pdf»
WB.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=pdfFilename, OpenAfterPublish:=False
При этом файл создается с названием «имя файла.pdf» начисто игнорируя содержимое ячейки указанной.
Вот макрос, который сохраняет без ограничения 255-ти символов в ячейке:
Метод Worksheet.SaveAs (Excel)
Сохраняет изменения диаграммы или таблицы в другом файле.
Синтаксис
выражения. SaveAs (FileName, FileFormat, Пароль, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)
выражение Переменная, представляюная объект «Таблица».
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| FileName | Обязательный | String | Вариант. Строка, которая указывает имя сохраненного файла. Вы можете включить полный путь; если нет, Microsoft Excel сохраняет файл в текущей папке. |
| FileFormat | Необязательный | Variant | Формат файла, который необходимо использовать при сохранения файла. Список допустимых вариантов см. в перечне XlFileFormat. Для существующего файла формат по умолчанию — это последний указанный формат файла; для нового файла по умолчанию используется формат версии Excel. |
| Password | Необязательный | Variant | Строка с учетом случая (не более 15 символов), которая указывает пароль защиты, который должен быть предоставлен файлу. |
| WriteResPassword | Необязательный | Variant | Строка, которая указывает пароль для записи резервирования для этого файла. Если файл сохранен с помощью пароля, а пароль не предоставляется при его открывлении, файл открывается только для чтения. |
| ReadOnlyRecommended | Необязательный | Variant | True для отображения сообщения при открываемом файле, рекомендуется открыть его только для чтения. |
| CreateBackup | Необязательный | Variant | True для создания файла резервного копирования. |
| AddToMru | Необязательный | Variant | Правда, чтобы добавить эту книгу в список недавно используемых файлов. Значение по умолчанию — False. |
| TextCodepage | Необязательный | Variant | Не используется в американских английских Microsoft Excel. |
| TextVisualLayout | Необязательный | Variant | Не используется в американских английских Microsoft Excel. |
| Local | Необязательный | Variant | True сохраняет файлы на языке Excel (включая параметры панели управления). False (по умолчанию) сохраняет файлы на языке Visual Basic для приложений (VBA) (который обычно является английским языком США, если проект VBA, в котором работает Workbooks.Open, не является старым интернационализированным проектом VBA XL5/95). |
Заметки
Используйте надежные пароли, содержащие строчные и прописные буквы, цифры и знаки. В ненадежных паролях не используются сочетания таких элементов. Надежный пароль: Y6dh!et5. Слабый пароль: House27. Используйте надежный пароль, который можно запомнить, чтобы не пришлось его записывать.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Как на VBA сохранить файл Excel с названием, взятым из ячейки?
Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.
Исходные данные
Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.
Примечание! Я использую Excel 2013.
В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.
Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.
Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.
Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.
Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».
Код процедуры
В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).
Добавление кнопки в Excel для запуска макроса
Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».
В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.
Сохранение файла Excel с названием из ячейки — без привязки к ячейке
Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).
Замените код процедуры следующим кодом, который совсем немного, но изменен.
Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).
Как видим, все отработало.
Сохранение файла Excel с названием, которое сформировано из значений двух ячеек
Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.
В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.
Код процедуры в данном случае будет выглядеть следующим образом.
Все ОК, файл создан.
Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.
Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.
Код процедуры
Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.
У меня на этом все, надеюсь, материал был Вам полезен, пока!






