Запускать макрос при сохранении книги Excel
Обновлено: 21.11.2024
Когда вы создаете/записываете макрос в книге Excel, его можно использовать только в этой книге.
Но что, если у вас есть список полезных макросов Excel, которые вы хотите использовать во всех книгах? В таком случае рекомендуется сохранить их в личной книге макросов.
Это позволит вам получить доступ к коду макроса из любой книги в вашей системе.
Это сэкономит время, поскольку вам не придется создавать одни и те же макросы снова и снова для каждой книги. Вместо этого вы можете просто создать его один раз, сохранить в личной книге макросов и получить к нему доступ из любой книги.
Если вы заинтересованы в простом изучении VBA, ознакомьтесь с моим онлайн-обучением Excel VBA.
Это руководство охватывает:
Что такое личная книга макросов?
Личная книга макросов — это скрытая книга в вашей системе, которая открывается при каждом открытии приложения Excel.
Это место, где вы можете хранить коды макросов, а затем получать доступ к этим макросам из любой книги. Это отличное место для хранения тех макросов, которые вы хотите часто использовать.
В качестве примера предположим, что вы регулярно получаете данные от своих коллег, и вам необходимо очищать данные и форматировать их. Поскольку каждый раз необходимо выполнять одни и те же действия, для этого можно создать макрос и сохранить его в личной книге макросов.
Теперь, всякий раз, когда вы получаете файл Excel, вам просто нужно запустить макрос (который хранится в личной книге и доступен из любой книги), и все готово.
Где найти личную книгу макросов?
По умолчанию личная книга макросов не существует. Вам нужно сначала создать его.
Вот как создать личную книгу макросов в Excel:
Примечание. Если вы не видите вкладку разработчика на ленте, выполните следующие действия, чтобы ее включить.
Это приведет к созданию новой книги с именем PERSONAL.XLSB и сохранению макроса в этой книге.
Поскольку мы абсолютно ничего не сделали, в макросе нет кода. Это было сделано для создания личной книги макросов.
Теперь, когда создана личная книга макросов, необходимо закрыть все открытые книги. При этом появится подсказка, как показано ниже:
Выберите Сохранить.
Когда это будет сделано, Excel создаст и сохранит файл PERSONAL.XLSB в начальной папке, где он будет автоматически открываться в серверной части всякий раз, когда вы открываете Excel.
Как копировать макросы в личную книгу макросов?
После создания и сохранения файла PERSONAL.XLSB вы можете скопировать макросы, которые хотите использовать повторно.
Вот шаги для копирования макросов в личную книгу макросов:
Вышеуказанные шаги позволят сохранить макросы, которые вы хотите повторно использовать, в личной книге макросов.
Как использовать макросы, хранящиеся в личной книге макросов?
Предположим, у вас есть список макросов, сохраненных в личной книге макросов, и вы хотите использовать его в новом полученном файле Excel.
Вот как это сделать:
- Перейдите на вкладку "Разработчик".
- Нажмите "Макросы".
- В диалоговом окне "Макрос" выберите макрос, который хотите запустить.
- Нажмите "Выполнить".
Обратите внимание, что в диалоговом окне макроса отображается список всех макросов, доступных для использования в открытой книге. Сюда входят макросы, хранящиеся в книге, а также те, которые хранятся в личной книге макросов.
Вы также можете запустить макрос, назначив макросу сочетание клавиш или вставив фигуру/кнопку и назначив ей макрос.
Вы также можете использовать личную книгу макросов для хранения пользовательских функций (пользовательских функций), созданных в VBA.
Я ищу способ, чтобы макрос запускался каждый раз при сохранении файла? В частности, я разрабатываю файл, который можно использовать на нашей приемной доке, и каждый раз, когда элемент получен и они помещают «x» в столбец «Получено», я хочу, чтобы мой макрос копировал эту строку на другой лист. < /p>
Факты об Excel
Мистер Коуз
Известный участник
Поместите следующее в ThisWorkbook в окне VBAProject
JFry08
Новый участник
Ислам Мамдух Али
Новый участник
Я попробовал приведенный ниже код, но он не работал у меня при сохранении, учитывая, что я являюсь младшим пользователем VBA. спасибо
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sub RenameTabs()
'Updateby20140624
For x = 1 To Sheets.Count
If Worksheets(x ).Range("A1").Value <> "" Then
Sheets(x).Name = Worksheets(x).Range("A1").Value
End If
Next
Конец подписки
S_Wish
Обычная доска
Ислам Мамдух Али
Новый участник
S_Wish
Обычная доска
чем вы должны сообщить нам, что вы хотите:
ваш код именует ваши листы, беря значения из ячейки A1 на каждом листе вашей книги.
Может быть, вы не нашли эту частную подпрограмму в «Объекты Microsoft Excel\Эта рабочая книга»?
Ислам Мамдух Али
Новый участник
Ваша речь верна, и я полностью с вами согласен, однако проблема в том, что я хочу ЗАПУСТИТЬ приведенный выше код при нажатии (кнопка сохранения), но это не сработало, когда я нажимаю просмотр макросов, а затем нажимаю запустить его работы.
наконец, я хочу резюмировать свою длинную речь о том, что "я хочу, чтобы мой код запускался автоматически при нажатии кнопки "Сохранить"
спасибо и с наилучшими пожеланиями,
S_Wish
Обычная доска
Ну, в моей версии Excel (2013) это работает, либо я нажимаю Ctrl+S, либо нажимаю значок сохранения.
Вы уверены, что поставили
НЕ в отдельном модуле и НЕ на каком-либо листе, НО в этой книге
PS у вас есть 2 папки в окне VBA: Microsoft Excel Objects и Modules. вам нужен первый и найдите там ThisWorkbook или что-то подобное //у меня нет английского excel, поэтому перевод может немного отличаться
Иногда вам может потребоваться автоматически запускать макрос при открытии книги Excel. Ниже приведены несколько случаев, когда вам необходимо запустить макрос при открытии книги Excel.
Автоматически запускать макрос при открытии книги Excel — решение(я):
Для этого можно использовать метод Workbook_Open() или Auto_Open().
Автоматический запуск макроса — примеры случаев:
Ниже приведен список ситуаций, когда нам нужно автоматически запускать макрос при открытии книги Excel.
Показ приветственного сообщения пользователю
Когда вы открываете книгу, вы можете передать пользователю некоторые инструкции. Или вы можете показать приветственное сообщение с определенным текстом или именем пользователя. Следующий код покажет вам, как запустить макрос автоматически.
Вывод:
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Дважды щелкните ThisWorkbook в Project Explorer.
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть окно сообщения, как показано выше.
Использование метода Auto open для автоматического запуска макроса:
Вы можете ВСТАВИТЬ новый модуль и поместить следующий код во вновь созданный модуль
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Вставить новый модуль из меню "Вставка"
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть окно сообщения, как показано выше.
Запуск некоторых стартовых скриптов при открытии книги
В следующем примере выполняется скрипт для подсчета количества рабочих листов в рабочей книге и вывода их списка на листе sheet1.
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Вставить новый модуль из меню "Вставка"
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть список имен листов в Sheet1
Вы можете использовать следующий код для заполнения поля со списком или списка на листе
В следующем примере показано, как заполнить регионы (Восток, Запад, Север, Юг) в поле со списком и поле со списком
Инструкции:
- Открыть книгу Excel
- Вставьте поле со списком (элемент управления ActiveX с ленты разработчика) на лист Sheet1. И назовите поле со списком (щелкните его правой кнопкой мыши и измените имя в свойствах) на ComboBox1
- Вставьте список (элемент управления ActiveX с ленты разработчика) на лист Sheet1. И назовите поле списка (щелкните его правой кнопкой мыши и измените имя в свойствах) на Listbox1
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Дважды щелкните ThisWorkbook в Project Explorer.
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть, что поле со списком и поле со списком на листе Sheet1 заполнены элементами
Вы можете использовать следующий код для активации листа или отображения пользовательской формы
В следующем примере показано, как активировать лист (с именем «Главная») и отобразить пользовательскую форму (UserForm1).Этот код активирует рабочий лист «Главная», а затем отобразит UserForm1
Инструкции:
- Открыть книгу Excel
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Вставьте пользовательскую форму из меню "Вставка" (UserForm1)
- Дважды щелкните ThisWorkbook в Project Explorer.
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть форму пользователя, которую вы создали
Вы можете очистить определенные листы или диапазоны при открытии книги
В следующем примере удаляются все рабочие листы в рабочей книге при ее открытии.
Инструкции:
- Открыть книгу Excel
- Введите образцы данных в каждую книгу.
- Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
- Дважды щелкните ThisWorkbook в Project Explorer.
- Скопируйте приведенный выше код и вставьте его в окно кода.
- Сохранить файл как книгу с поддержкой макросов
- Откройте книгу, чтобы протестировать ее, она автоматически запустит макрос. Вы должны увидеть, что все рабочие листы очищены
Вы можете скачать файл примера и посмотреть, как он работает.
Обратите внимание: мы можем комментировать некоторый код, поскольку мы можем написать только одну процедуру auto_open() или Workbook_open().
Мощные и многоцелевые шаблоны для управления проектами. Теперь легко управляйте своими проектами, задачами, встречами, презентациями, командами, клиентами, заинтересованными сторонами и временем. На этой странице описаны все удивительные новые функции и возможности наших премиальных шаблонов.
Чтобы сохранить книгу Excel с помощью VBA, необходимо использовать метод SAVE для написания макроса. И в этом макросе вам нужно указать книгу, которую вы хотите сохранить, а затем использовать метод SAVE. Когда вы запускаете этот код, он работает как сочетание клавиш (Control + S).
- Укажите шляпу рабочей книги, которую вы хотите сохранить.
- Введите точку, чтобы получить список всех свойств и методов.
- Выберите один из способов «Сохранить» или введите «Сохранить».
- В конце запустите код, чтобы сохранить книгу.
В этом руководстве мы рассмотрим различные способы сохранения книги. Поэтому не забудьте открыть редактор VBA на вкладке разработчика, чтобы использовать код из этого руководства.
Сохраните ActiveWorkbook
Если вы хотите сохранить активную книгу, в этом случае вы можете использовать код, подобный приведенному ниже, вместо того, чтобы указывать книгу по ее имени.
Когда вы используете ActiveWorkbook в качестве рабочей книги, VBA всегда обращается к рабочей книге, которая активна, независимо от того, в каком файле вы пишете код.
Сохраните рабочую книгу, в которой вы пишете код
Если вы хотите сохранить файл, в котором вы пишете код, вам нужно использовать «ThisWorkbook» вместо имени книги.
Сохранить все открытые книги
Здесь мы можем использовать цикл, чтобы просмотреть все открытые книги и сохранить их одну за другой. Посмотрите на приведенный ниже код.
Приведенный выше код использует цикл FOR EACH в каждой книге, а также метод SAVE для каждого файла один за другим.
Примечание. Если вы пытаетесь сохранить книгу с помощью метода СОХРАНИТЬ, который еще не сохранен, Excel покажет диалоговое окно с запросом вашего разрешения на сохранение этого файла, а затем вам нужно выбрать, хотите ли вы сохранить этот файл в местоположении по умолчанию в формате по умолчанию.
Теперь вот что: поскольку вы используете макрос для сохранения книги, этот файл должен быть сохранен в формате с поддержкой макросов, и лучший способ справиться с этой ситуацией — использовать метод СОХРАНИТЬ КАК (мы см. в следующем разделе этого руководства).
Сохранить как файл Excel
Чтобы СОХРАНИТЬ еще не сохраненный файл с помощью VBA, необходимо использовать метод СОХРАНИТЬ КАК. В этом методе вы можете указать имя файла и путь, по которому вы хотите сохранить файл, и, кроме того, вы можете определить еще десять аргументов.
В следующем коде у вас нет аргументов для метода "СОХРАНИТЬ КАК".
Когда вы запускаете этот код, он спрашивает вас о нескольких вещах, например, какой формат вы хотите использовать для сохранения файла, хотите ли вы заменить существующий файл, который уже сохранен, с тем же именем. Поэтому лучше определить использование некоторых аргументов.
Сохранить как файл в текущем местоположении
По умолчанию VBA использует текущее местоположение для сохранения файла.Когда вы пишете код с помощью метода СОХРАНИТЬ КАК и просто указываете имя, этот файл сразу попадает в текущую папку. В следующем коде вы можете увидеть, где у вас есть , который сохраняет активную книгу.
Сохранить как файл в определенном месте
Аргумент имени файла также позволяет использовать путь к местоположению, если вы хотите использовать другое место для сохранения файла.
В приведенном выше коде у вас есть путь в аргументе FileName, и VBA использует этот путь к файлу.
Примечание. Вы также можете использовать этот метод, чтобы проверить, существует ли книга в папке или нет, прежде чем использовать метод СОХРАНИТЬ КАК, чтобы сохранить ее в определенном месте, и вы можете узнать больше о методе СОХРАНИТЬ КАК здесь. р>
Читайте также: