Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel сохранить книгу без подтверждения

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

Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.

Исходные данные

Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.

Примечание! Я использую Excel 2013.

В зависимости от конкретных требований и условий, задачу можно реализовать по-разному, хотя принцип будет один и тот же, в этой статье мы рассмотрим несколько вариаций реализации.

Начнем мы с самой простой ситуации, когда заранее известна ячейка, на основе которой будет сформировано имя файла, и адрес этой ячейки изменяться не будет.

Сохранение файла Excel с названием из ячейки — с привязкой к этой ячейке

Итак, данные у нас есть, теперь необходимо написать процедуру на VBA (макрос), которая брала бы значение из конкретной ячейки, в данном случае это будет ячейка B14, и присваивала бы это значение имени файла.

Ниже представлен код процедуры, я его подробно прокомментировал. Единственное скажу, что я во всех примерах сохраняю новые файлы без макросов (расширение .xlsx), т.е. по факту будет один файл с поддержкой макросов, а все производные — без.

Если нужно сохранять макрос в каждом файле, т.е. файлы с поддержкой макросов (расширение .xlsm), то необходимо просто указать другой тип файла при сохранении, а именно xlOpenXMLWorkbookMacroEnabled, в процедурах в комментариях я это указываю.

Открываем в Excel редактор Visual Basic, и вставляем код следующей процедуры в исходный код этой книги (ЭтаКнига, открыть двойным кликом) или в модуль, который Вы предварительно должны создать.

Примечание! Для того чтобы открыть редактор Visual Basic в Excel, необходимо перейти на вкладку «Разработчик» и нажать на кнопку «Visual Basic». Файл Excel с кодом процедуры необходимо сохранить с типом «Книга Excel с поддержкой макросов».

Код процедуры

После сохранения файла запустите макрос («Макросы -> Выполнить -> SaveFile»).

В результате в моем случае процедура успешно выполнилась, файл сохранился с названием «Марка Авто 1», данное значение взято из ячейки B14, о чем будет свидетельствовать сообщение в конце процедуры. Файл сохранен в каталоге, где и исходный файл (во всех примерах ниже прописано то же самое, т.е. сохранение рядом с исходником, но это Вы можете изменить).

Добавление кнопки в Excel для запуска макроса

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

Затем выберите место, где вставить кнопку, и нажмите туда. После этого появится окно назначения действия, т.е. нужно выбрать, какой макрос запускать при нажатии этой кнопки, выбираем наш макрос, т.е. SaveFile, и нажимаем «ОК».

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

Сохранение файла Excel с названием из ячейки — без привязки к ячейке

Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).

Читать еще:  Разрешение файлов excel

Замените код процедуры следующим кодом, который совсем немного, но изменен.

Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).

Как видим, все отработало.

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

Теперь представим, что нам нужно сформировать файл с названием из значений двух ячеек. Например, в нашем случае это может быть «Марка Авто – VIN Номер», в качестве разделителя я указал символ – (дефис), но им может выступать любой символ или вовсе отсутствовать.

В этом примере я покажу, как можно это реализовать с привязкой к конкретным ячейкам, в нашем случае B14 и D14.

Код процедуры в данном случае будет выглядеть следующим образом.

Все ОК, файл создан.

Если вдруг нужно реализовать без привязки к конкретным ячейкам, например, значения хранятся в определённых столбцах, но конкретная строка неизвестна Вам заранее. Например, у меня несколько строк со значениями, и какие конкретно значения взять за основу названия файла, я хочу указывать самостоятельно, непосредственно перед сохранением, но при этом не редактировать код процедуры.

Для этого мы снова внесем изменения в нашу процедуру, которая будет работать от активной ячейки (смещение от активной ячейки), только с условием того, что выбран столбец с теми значениями, которые необходимо использовать.

Код процедуры

Становитесь на любую ячейку со значением в столбце B, и запускайте макрос.

У меня на этом все, надеюсь, материал был Вам полезен, пока!

Vba excel сохранить книгу без подтверждения

добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения
скажите что в этом коде не так((((

добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения
скажите что в этом коде не так((((

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

KSVДата: Суббота, 21.03.2015, 14:29 | Сообщение № 2

200?’200px’:»+(this.scrollHeight+5)+’px’);»> ‘ подавляет предупреждения Excel
Workbooks.Application.DisplayAlerts = False

‘ сохраняет книгу в файл С ДРУГИМ именем
Excel.ActiveWorkbook.SaveAs («rl.xlsm»)

‘ сохраняет книгу в файл С ТЕМ ЖЕ именем
Excel.ActiveWorkbook.Save

‘ закрывает книгу
Workbooks.Close

‘ закрыть с сохранением (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close True

‘ закрыть без сохранения (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close False

‘ закрыть Excel (закроется только если в этом же Application больше нет открытых и не сохраненных книг,
‘ иначе будет запрашивать подтверждения сохранения, при .DisplayAlerts = True)
Application.Quit

200?’200px’:»+(this.scrollHeight+5)+’px’);»> ‘ подавляет предупреждения Excel
Workbooks.Application.DisplayAlerts = False

‘ сохраняет книгу в файл С ДРУГИМ именем
Excel.ActiveWorkbook.SaveAs («rl.xlsm»)

‘ сохраняет книгу в файл С ТЕМ ЖЕ именем
Excel.ActiveWorkbook.Save

‘ закрывает книгу
Workbooks.Close

‘ закрыть с сохранением (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close True

‘ закрыть без сохранения (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close False

‘ закрыть Excel (закроется только если в этом же Application больше нет открытых и не сохраненных книг,
‘ иначе будет запрашивать подтверждения сохранения, при .DisplayAlerts = True)
Application.Quit

Сообщение все правильно

200?’200px’:»+(this.scrollHeight+5)+’px’);»> ‘ подавляет предупреждения Excel
Workbooks.Application.DisplayAlerts = False

‘ сохраняет книгу в файл С ДРУГИМ именем
Excel.ActiveWorkbook.SaveAs («rl.xlsm»)

‘ сохраняет книгу в файл С ТЕМ ЖЕ именем
Excel.ActiveWorkbook.Save

‘ закрывает книгу
Workbooks.Close

‘ закрыть с сохранением (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close True

‘ закрыть без сохранения (без запроса подтверждения пользователя, даже если .DisplayAlerts = True)
Workbooks.Close False

‘ закрыть Excel (закроется только если в этом же Application больше нет открытых и не сохраненных книг,
‘ иначе будет запрашивать подтверждения сохранения, при .DisplayAlerts = True)
Application.Quit

85Muslim85Дата: Суббота, 21.03.2015, 14:35 | Сообщение № 3

все отлично)) спасибки. вот чего я хотел)

Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit

все отлично)) спасибки. вот чего я хотел)

Workbooks.Application.DisplayAlerts = False
Excel.ActiveWorkbook.Save
Application.Quit 85Muslim85

Сообщение все отлично)) спасибки. вот чего я хотел)

Как изменить макрос, чтобы он сохранял книгу без подтверждения

Visual Basic
19.10.2012, 12:03

Как настроить Яндекс диск, чтобы не сохранял файлы на пк, а сохранял только в облаке
Настроил у себя сетевой диск к яд диску. Указал при скачивании файлов путь до диска. Вопрос, файлы.

Изменить реестр без подтверждения .
Как отредактировать реестр с помошью батника? например ( Мой.

Как сделать чтобы браузер сохранял значение поля?
Например поле: чтобы браузер показывал уже.

19.10.2012, 13:172

не спрашивал, сохранять ли файл, а сам сохранял автоматически?

Visual Basic
19.10.2012, 13:333
19.10.2012, 13:364

С миру по нитке. D

Visual Basic
19.10.2012, 13:41 [ТС]5

Скрипт, да уж, действительно проще от этого не будет )) Надеюсь, мне это никогда не пригодится, но спасибо ))

Добавлено через 3 минуты
Апострофф, не, по-моему, так не получится: у меня же файл не один, а много, и имена у них должны получиться разные.

19.10.2012, 13:496
19.10.2012, 13:56 [ТС]7
Visual Basic
19.10.2012, 14:008
Visual Basic
19.10.2012, 14:09 [ТС]9

Апострофф, вооот, спасибо, отечественная наука вам благодарна, вопрос закрыт окончательно ) Но я еще вернусь ))

Что ж поделаешь, если я учила другие языки и не владею vba, а считать надо. :pardon:

19.10.2012, 14:09
19.10.2012, 14:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать кнопку сохранить, чтобы с textbox сохранял документ
Как сделать кнопку сохранить, чтобы с textbox сохранял документ.

Как написать простой скрипт, чтобы сохранял изображения с необходимым именем
Скрипт сохраняет одно изображение с именем image1.jpg, а как сделать чтобы сохранял несколько с.

Как переделать макрос так, что бы после слияния Word создавал PDF и сохранял в PDF каждый раздел отдельно?
Добрый вечер всем! Помогите переделать макрос что бы после слияние, word создавал PDF и сохранял в.

Запрос «Отключение сохранения изменений» при закрытии книги в Excel

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

Описание

В Microsoft Excel можно создать макрос Microsoft Visual Basic для приложений (VBA), который подавляет запрос на Сохранение изменений при закрытии книги. Это можно сделать, указав состояние книги, в которой хранится сохраненное свойство, или подавить все оповещения для книги.

Дополнительные сведения

ПРИМЕЧАНИЕ. Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, не выполняя либо подразумеваемых. Сюда относится, но не ограничивается подразумеваемым гарантийным обязательством о товаре или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который вы продемонстрировали, и с инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить особенности конкретных процедур. Однако они не изменяют эти примеры для предоставления дополнительной функциональности или создания процедур, отвечающих вашим конкретным требованиям.

Чтобы подготовиться к реализации одного из примеров ниже, выполните эти действия в первую очередь.

Запустите Excel и откройте новую книгу.

Нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.

В меню Вставка выберите пункт модуль.

Введите пример кода макроса на лист модуля.

Нажмите клавиши ALT + F11, чтобы вернуться в Excel.

В Microsoft Office Excel 2003 и более ранних версиях Excel в меню Сервис выберите пункт макрос , а затем — макросы.

В Microsoft Office Excel 2007 в группе код на вкладке разработчик нажмите кнопку макросы .

Если вкладка разработчикнедоступна, выполните указанные ниже действия.

помощью. Нажмите кнопку Microsoft Office , а затем — Параметры Excel.

байт. В категории популярные в разделе Основные параметры работы с Excelвыберите пункт Показать
. Флажок «Разработчик» на ленте и нажмите кнопку ОК.

Выберите нужный макрос и нажмите кнопку выполнить.

Свойство Saved возвращает значение false , если после последнего сохранения книги были внесены изменения.

Для указания макроса, который должен выполняться при закрытии книги, можно использовать зарезервированное имя подпрограммы Auto_Close . Таким образом, вы можете управлять обработкой документа, когда пользователь закрывает документы в Excel.

Пример 1: Закрытие книги без сохранения изменений

Чтобы принудительно закрыть книгу, не сохраняя никаких изменений, введите следующий код в модуль Visual Basic этой книги:

ДоЧерний элемент Auto_Close ()

ThisWorkbook. Save = true

Если для свойства Saved установлено значение true, приложение Excel отправляет сообщение о том, что книга уже была сохранена, и после последнего сохранения изменения не произошел.

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

Application. Дисплайалертс = false

Application. Дисплайалертс = true

Кроме того, можно использовать аргумент SaveChanges метода Close .

Следующий макрос закрывает книгу без сохранения изменений.

Пример 2: Закрытие книги и сохранение изменений

Чтобы принудительно сохранить изменения в книге, введите следующий код в модуль Visual Basic этой книги:

ДоЧерний элемент Auto_Close ()

Если ThisWorkbook. Save = false, то

ThisWorkbook. Save End, если

Эта подпроцедура проверяет, было ли для сохраненного свойства File задано значение false. Если да, то книга была изменена с момента последнего сохранения, и эти изменения будут сохранены.

Ссылка на основную публикацию
Adblock
detector