Vba сохранить файл как: Как на VBA сохранить файл Excel с названием, взятым из ячейки? | Info-Comp.ru
Содержание
Как на VBA сохранить файл Excel с названием, взятым из ячейки? | Info-Comp.ru
Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.
Содержание
- Исходные данные
- Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
- Добавление кнопки в Excel для запуска макроса
- Сохранение файла Excel с названием из ячейки — без привязки к ячейке
- Сохранение файла Excel с названием, которое сформировано из значений двух ячеек
Исходные данные
Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.
Примечание! Я использую Excel 2013.
В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.
Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.
Заметка! Этапы разработки программы – как создаются и проектируются программы?
Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке
Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.
Ниже представлен код процедуры, я его подробно прокомментировал. Единственное скажу, что я во всех примерах сохраняю новые файлы без макросов (расширение .xlsx), т.е. по факту будет один файл с поддержкой макросов, а все производные — без.
Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.
Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.
Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».
Код процедуры
Sub SaveFile() 'Объявление переменных Dim CellValue As String Dim Path As String Dim FinalFileName As String 'Временно отключаем показ вспомогательных сообщений Application.DisplayAlerts = False 'Задаём каталог сохранения файла (в данном случае текущий каталог) Path = ThisWorkbook.Path & "\" 'Получаем значение ячейки CellValue = Range("B14") 'Формируем итоговый путь и название файла FinalFileName = Path & CellValue 'Сохраняем файл ActiveWorkbook.SaveAs FileName:=FinalFileName, _ FileFormat:=xlOpenXMLWorkbook 'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом 'Включаем вывод сообщений Application.DisplayAlerts = True 'Сообщение с результатом выполнения процедуры MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат" End Sub
После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).
В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).
Заметка! Статический анализ кода в теории и на практике.
![]()
Добавление кнопки в Excel для запуска макроса
Каждый раз открывать окно с макросами и выбирать нужный макрос не очень удобно, поэтому можно легко добавить кнопку где-нибудь рядом с данными и просто нажимать ее. Это делается следующим образом «Вкладка Разработчик -> Вставить -> Кнопка (элемент управления формы)».
Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».
В итоге появится кнопка с названием «Кнопка», это название лучше изменить, например, на «Сохранить файл». Для этого нажмите правой кнопкой мыши на кнопку и выберите настройки «Изменить текст». В итоге у Вас должно получиться что-то вроде этого.
Заметка! ТОП 7 популярных языков программирования.
![]()
Сохранение файла Excel с названием из ячейки — без привязки к ячейке
Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).
Замените код процедуры следующим кодом, который совсем немного, но изменен.
Sub SaveFile() 'Объявление переменных Dim CellValue As String Dim Path As String Dim FinalFileName As String 'Временно отключаем показ вспомогательных сообщений Application.DisplayAlerts = False 'Задаём каталог сохранения файла (в данном случае текущий каталог) Path = ThisWorkbook.Path & "\" 'Проверка значения ячейки If ActiveCell.Value = "" Then MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!" Exit Sub End If 'Получаем значение активной ячейки CellValue = ActiveCell.Value 'Формируем итоговый путь и название файла FinalFileName = Path & CellValue 'Сохраняем файл ActiveWorkbook.SaveAs FileName:=FinalFileName, _ FileFormat:=xlOpenXMLWorkbook 'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом 'Включаем вывод сообщений Application.DisplayAlerts = True MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат" End Sub
Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).
Как видим, все отработало.
Сохранение файла Excel с названием, которое сформировано из значений двух ячеек
Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.
В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.
Код процедуры в данном случае будет выглядеть следующим образом.
Sub SaveFile() 'Объявление переменных Dim CellValue As String Dim Path As String Dim FinalFileName As String 'Временно отключаем показ вспомогательных сообщений Application.DisplayAlerts = False 'Задаём каталог сохранения файла (в данном случае текущий каталог) Path = ThisWorkbook.Path & "\" 'Проверка значения ячеек B14 и D14 If Range("B14").Value = "" Or Range("D14").Value = "" Then MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!" Exit Sub End If 'Складываем значения из двух ячеек B14 и D14 CellValue = Range("B14").Value & " - " & Range("D14").Value 'Формируем итоговый путь и название файла FinalFileName = Path & CellValue 'Сохраняем файл ActiveWorkbook.SaveAs FileName:=FinalFileName, _ FileFormat:=xlOpenXMLWorkbook 'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом 'Включаем вывод сообщений Application.DisplayAlerts = True MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат" End Sub
Запускаем макрос.
Все ОК, файл создан.
Заметка! Как измерить сложность кода программы при программировании?
Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.
Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.
Код процедуры
Sub SaveFile() 'Объявление переменных Dim CellValue As String Dim Path As String Dim FinalFileName As String 'Временно отключаем показ вспомогательных сообщений Application.DisplayAlerts = False 'Задаём каталог сохранения файла (в данном случае текущий каталог) Path = ThisWorkbook.Path & "\" 'Проверка номера столбца If ActiveCell.Column <> 2 Then MsgBox "Указан некорректный столбец", vbCritical, "Ошибка!" Exit Sub End If 'Проверка значения ячейки If ActiveCell.Value = "" Then MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!" Exit Sub End If 'Получаем значение активной ячейки CellValue = ActiveCell.Value 'Смещаемся на 2 столбца, относительно активной ячейки ActiveCell.Offset(0, 2).Select 'Складываем значения из двух ячеек CellValue = CellValue & " - " & ActiveCell.Value 'Формируем итоговый путь и название файла FinalFileName = Path & CellValue 'Сохраняем файл ActiveWorkbook.SaveAs FileName:=FinalFileName, _ FileFormat:=xlOpenXMLWorkbook 'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом 'Включаем вывод сообщений Application.DisplayAlerts = True MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат" End Sub
Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.
Заметка! Опрос. Какой операционной системой Вы пользуетесь?
У меня на этом все, надеюсь, материал был Вам полезен, пока!
Программное сохранение файла Excel на сетевой диск — Office
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
- Чтение занимает 2 мин
-
-
- Применяется к:
- Microsoft Excel
Аннотация
В Microsoft Excel вы можете сохранить файл на любом диске, для которого у вас есть права на запись и удаление. Кроме того, можно использовать макрос Microsoft Visual Basic для приложений для сохранения текущей рабочей книги и использовать переменную для имени файла. Можно использовать переменные из свойства ActiveWorkbook.Name, из данных поля ввода или из ссылки на ячейку.
Примечание.
Если вы используете полный путь для имени файла, Microsoft Excel будет точно знать, где сохранить файл. Если путь не указан, Microsoft Excel сохранит файл в текущий активный каталог или папку.
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Это относится, в частности, к подразумеваемым гарантиям товарного состояния или пригодности для конкретной цели. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.
Пример макроса 1
Для сохранения активной рабочей книги с переменной по указанному пути используйте следующий макрос:
Sub SaveWithVariable() Dim MyFile As String MyFile = ActiveWorkbook.Name ' Do not display the message about overwriting the existing file. Application.DisplayAlerts = False ' Save the active workbook with the name of the ' active workbook. Save it on the E drive to a folder called ' "User" with a subfolder called "JoeDoe." ActiveWorkbook.SaveAs Filename:="E:\User\JoeDoe\" & MyFile ' Close the workbook by using the following. ActiveWorkbook.Close End Sub
Пример макроса 2
Используйте имя файла, сохраненное в ячейке, и сохраните файл на сетевом сервере. Для этого используйте следующий макрос:
Sub SaveWithVariableFromCell() Dim SaveName As String SaveName = ActiveSheet.Range("A1").Text ActiveWorkbook.SaveAs Filename:="E:\User\JoeDoe\" & _ SaveName & ".xls" End Sub
Сохранить файл VBA — 20 простых примеров
В этой статье
- Сохранить рабочую книгу — VBA
- Сохранить указанную рабочую книгу
- Сохранить активную рабочую книгу
- Сохранить рабочую книгу, где хранится код VBA
4
- Сохранить все открытые книги
- Сохранить все открытые книги, которые не были открыты Только для чтения
- Сохранить книгу, определенную переменной
- Сохранить книгу, определенную строковой переменной
- Сохранение рабочей книги в порядке ее открытия.
- Сохранить книгу на основе значения ячейки
- Сохранить как Синтаксис:
- Сохранить как Примеры синтаксиса:
- Сохранить книгу как — Тот же каталог
- Сохранить книгу как — Новый каталог
Как — новый каталог, укажите расширение файла
- Диалоговое окно «Создать Сохранить как»
- Диалоговое окно «Создать Сохранить как» с заданным именем файла по умолчанию Создать диалоговое окно «Сохранить как» с заданным именем файла по умолчанию
- Создать и сохранить новую книгу
- Отключить оповещения о сохранении
В этом учебном пособии по VBA рассказывается, как сохранить файл с помощью команд «Сохранить» и «Сохранить как» в VBA.
Сохранить книгу — VBA
Команда VBA «Сохранить» сохраняет файл Excel аналогично щелчку значка «Сохранить» или использованию сочетания клавиш «Сохранить» (CTRL + S).
Сохранить указанную книгу
Чтобы сохранить книгу, укажите ссылку на объект книги и используйте команду Сохранить.
Workbooks("savefile.xlsm"). Сохранить
Сохранить активную книгу
Примечание. Это текущая активная книга из кода VBA, которая отличается от ThisWorkbook, которая содержит текущий код.
ActiveWorkbook.Save
VBA Coding Made Easy
Прекращение поиска кода VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Узнайте больше!
Сохранить рабочую книгу, в которой хранится код
ThisWorkbook.save
Сохранить все открытые рабочие книги
Это циклически перебирает все открытые рабочие книги, сохраняя каждую из них.
Dim wb как рабочая книга Для каждого wb в Application.Workbooks wb.Сохранить Next wb
Сохранить все открытые книги, которые не были открыты Только для чтения
Примечание. Открытие книги в режиме Только для чтения предотвращает сохранение файла.
Чтобы сохранить файл, вам нужно будет использовать Сохранить как и сохранить файл под другим именем.
Dim wb как рабочая книга Для каждого wb в Application.Workbooks Если не wb ReadOnly, то wb.Сохранить Конец, если Следующая вб
Сохранить рабочую книгу, определенную переменной
При этом будет сохранена рабочая книга, назначенная переменной объекта рабочей книги.
Dim wb как рабочая книга установить wb = книги ("savefile.xlsm") wb.save
Сохранить книгу, определенную строковой переменной
Это сохранит книгу, имя которой было сохранено в строковой переменной.
Dim wbstring как строка wbstring = "сохранить файл.xlsm" workbooks(wbstring).save
Сохранение рабочей книги в порядке ее открытия.
Примечание. Первая открытая рабочая книга будет иметь 1, вторая 2 и т. д.
рабочих книг(1).save
Программирование на VBA | Генератор кода работает на вас!
Сохранить книгу на основе значения ячейки
Это позволит сохранить книгу, имя которой найдено в значении ячейки.
Dim wbstring как строка wbstring = activeworkbook.sheets("лист1").range("wb_save").значение workbooks(wbstring).save
Сохранить как — VBA
Команда VBA «Сохранить как» сохраняет файл Excel как новый файл, аналогично щелчку значка «Сохранить как» или использованию ярлыка «Сохранить как» (Alt > F > A).
Выше мы определили все способы указать, какую книгу сохранить. Вы можете использовать те же самые методы для идентификации книг при использовании «Сохранить как».
Сохранить как работает так же, как Сохранить, за исключением того, что вам также нужно указать имя нового файла.
На самом деле, функция «Сохранить как» имеет множество потенциальных переменных для определения:
Синтаксис «Сохранить как»:
объект книги. ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _ AddToMru, TextCodepage, TextVisualLayout, Local)
Ниже приведено полное описание всех аргументов команды «Сохранить как». А пока остановимся на самых распространенных примерах.
Примечание. Эти аргументы можно вводить как строку с круглыми скобками или как определенные переменные.
Сохранить как Примеры синтаксиса:
Книга Сохранить как – Тот же каталог
wbstring = «новый»
ActiveWorkbook.SaveAs Имя файла:= wbstring
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
Сохранить книгу как — новый каталог
ActiveWorkbook.SaveAs Имя файла:= "C:\new"
или
Dim wbstring as string wbstring = "C:\новый" ActiveWorkbook.SaveAs Имя файла:= wbstring=
Сохранить книгу как – новый каталог, указать расширение файла
ActiveWorkbook.SaveAs Имя файла:= "C:\new.xlsx"
или
Затенить wbstring как строку wbstring = "C:\new.xlsx" ActiveWorkbook.SaveAs Имя файла:= wbstring
Сохранить книгу как — новый каталог, указать расширение файла — альтернативный метод
Вы также можете указать формат файла в собственном аргументе.
.xlsx = 51 '(52 для Mac) .xlsm = 52 '(53 для Mac) .xlsb = 50 '(51 для Mac) .xls = 56 '(57 для Mac)
ActiveWorkbook.SaveAs Имя файла: = "C:\new", FileFormat: = 51
Сохранить книгу как — добавить пароль для открытия файла
ActiveWorkbook.SaveAs Имя файла: = "C :\new.xlsx", Пароль:= "пароль"
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
Сохранить книгу как — добавить пароль для прав записи
Если правильный пароль не указан, книга открывается только для чтения
ActiveWorkbook.SaveAs Filename:= "C:\new.xlsx", WriteRes:= "password"
Книга Сохранить как — только для чтения Рекомендуется
TRUE для отображения окна сообщения, рекомендующего открыть файл только для чтения.
ActiveWorkbook.SaveAs Имя файла: = "C:\new.xlsx", ReadOnlyRecommended: = TRUE
Другое Примеры «Сохранить как»
Создать диалоговое окно «Сохранить как»
Создает диалоговое окно «Сохранить как», предлагающее пользователю сохранить файл.
Имейте в виду, что этот простой код может не подходить во всех случаях.
Application.GetSaveAsFilename
Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!
Создать диалоговое окно «Сохранить как» с заданным именем файла по умолчанию
Application.GetSaveAsFilename InitialFilename:="test.xlsx"
Создать диалоговое окно «Сохранить как» с заданным именем файла по умолчанию
Application.GetSaveAsFilename InitialFilename:="test.xlsx"
Создать и сохранить новую книгу
При этом будет создана новая книга и немедленно сохранена.
Dim wb As Workbook Установите wb = Workbooks.Добавить Application.DisplayAlerts = Ложь wb.SaveAs Имя файла: = ”c:\Test1.xlsx” Application.DisplayAlerts = Истина
Отключение предупреждений о сохранении
При работе с сохранением в VBA вы можете столкнуться с различными предупреждениями или подсказками о сохранении. Чтобы отключить предупреждения, добавьте эту строку кода:
Application.DisplayAlerts=False
и для повторного включения предупреждений:
Application.DisplayAlerts=True
Метод Workbook.SaveAs (Excel) | Microsoft Узнайте
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
- 3 минуты на чтение
Сохраняет изменения книги в другом файле.
Примечание
Заинтересованы в разработке решений, расширяющих возможности Office на различных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любые технологии веб-программирования, такие как HTML5, JavaScript, CSS3 и XML.
Синтаксис
выражение . SaveAs ( FileName , FileFormat , Password , WriteResPassword , ReadOnlyRecommended , CreateBackup , AccessMode , ConflictResolution , AddToMru , TextCodepage , TextVisualLayout , Local )
выражение Переменная, представляющая объект Workbook .
Параметры
Имя | Требуется/дополнительно | Тип данных | Описание |
---|---|---|---|
Имя файла | Дополнительно | Вариант | Строка, указывающая имя сохраняемого файла. |
Формат файла | Дополнительно | Вариант | Формат файла, используемый при сохранении файла. Список допустимых вариантов см. в перечислении XlFileFormat . Форматом по умолчанию для существующего файла является последний указанный формат файла; для нового файла по умолчанию используется формат используемой версии Excel. |
Пароль | Дополнительно | Вариант | Строка с учетом регистра (не более 15 символов), указывающая пароль защиты, который будет присвоен файлу. |
WriteResPassword | Дополнительно | Вариант | Строка, указывающая пароль резервирования записи для этого файла. Если файл сохранен с паролем, а пароль не предоставляется при открытии файла, файл открывается только для чтения. |
Только для чтенияРекомендуется | Дополнительно | Вариант | True для отображения сообщения при открытии файла с рекомендацией открыть файл только для чтения. |
Создать резервную копию | Дополнительно | Вариант | True для создания файла резервной копии. |
Режим доступа | Дополнительно | Слсавеасаксессмоде | Режим доступа к книге. |
Разрешение конфликтов | Дополнительно | XLSaveConflictResolution | XlSaveConflictResolution , которое определяет, как метод разрешает конфликт при сохранении книги. Если установлено значение xlUserResolution , отображается диалоговое окно разрешения конфликтов.
Если установлено значение xlLocalSessionChanges , изменения локального пользователя принимаются автоматически. Если установлено значение xlOtherSessionChanges , изменения из других сеансов автоматически принимаются вместо изменений локального пользователя. Если этот аргумент опущен, отображается диалоговое окно разрешения конфликтов. |
AddToMru | Дополнительно | Вариант | True , чтобы добавить эту книгу в список недавно использованных файлов. Значение по умолчанию — False . |
TextCodepage | Дополнительно | Вариант | Игнорируется для всех языков в Microsoft Excel.
ПРИМЕЧАНИЕ : когда Excel сохраняет книгу в одном из форматов CSV или текстовых форматов, которые указываются с помощью Параметр FileFormat использует кодовую страницу, соответствующую языку языкового стандарта системы, который используется на текущем компьютере. Этот системный параметр доступен на панели управления > Регион и язык > Местоположение в разделе Текущее местоположение . |
Текствизуаллайаут | Дополнительно | Вариант | Игнорируется для всех языков в Microsoft Excel.
ПРИМЕЧАНИЕ . Когда Excel сохраняет книгу в одном из форматов CSV или текстовых форматах, указанных с помощью параметра FileFormat , эти форматы сохраняются в логическом формате. Если текст с написанием слева направо (LTR) встроен в текст с написанием справа налево (RTL) в файле или наоборот, логическая компоновка сохраняет содержимое файла в правильном порядке чтения для всех языков в файле без что касается направления. Когда приложение открывает файл, каждый запуск символов LTR или RTL отображается в правильном направлении в соответствии с диапазонами значений символов в пределах кодовой страницы (если только приложение не предназначено для отображения точного расположения памяти файла, такого как отладчик или редактор, используется для открытия файла). |
Местный | Дополнительно | Вариант | True сохраняет файлы на языке Microsoft Excel (включая настройки панели управления). |