Перейти к содержимому

Как сохранить и использовать свои макросы VBA во всех книгах Excel?

Author: Zhoumandy Last Modified: 2025-08-07

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

A screenshot showing the Add-ins dialog in Excel

Сохранение и использование кода VBA во всех книгах
Метод личной книги макросов


Сохранение и использование кода VBA во всех книгах

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

Для этого вы можете упаковать свой код VBA в виде пользовательского надстройки Excel. Эта надстройка может быть включена в Excel и предоставит вашу пользовательскую функциональность как глобально доступную функцию.

Следуйте этим шагам:

1. Нажмите Alt + F11 в Excel, чтобы открыть окно "Microsoft Visual Basic for Applications".

2. В редакторе VBA нажмите Вставка > Модуль и вставьте следующий макрос в новое окно Модуля.

Код VBA: Преобразование чисел в слова

Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function

3. Теперь нажмите значок «Сохранить», расположенный в верхнем левом углу окна, или просто нажмите Ctrl + S чтобы открыть диалоговое окно «Сохранить как».
A screenshot showing the Save option in the VBA window

4. В окне «Сохранить как» введите желаемое имя файла в поле «Имя файла». Для выпадающего списка «Тип файла» обязательно выберите Надстройка Excel (*.xlam).
A screenshot showing the Save As dialog box with the selection of Excel Add-in (*.xlam) as the save type

5. Нажмите кнопку «Сохранить», чтобы сохранить вашу книгу в виде файла надстройки Excel. Это создаст многоразовую надстройку, которую можно включить в любое время для любой книги.
A screenshot showing the workbook saved as an Excel Add-in

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

7. Откройте новую или существующую книгу, где вы хотите использовать свой макрос. Введите пользовательскую формулу в соответствующую ячейку (например, в B2):

=NumberstoWords(A2)
Примечание: На этом этапе может появиться ошибка «#ИМЯ?». Это ожидаемо, поскольку надстройка с макросом ещё не загружена глобально в Excel. Следуйте дальнейшим шагам, чтобы сделать ваш макрос доступным во всех книгах.
A screenshot of the #NAME? error before applying the saved VBA macro

8. Перейдите на вкладку Разработчик и нажмите кнопку Надстройки Excel в группе Надстройки.
A screenshot showing the Add-ins option under the Developer tab in Excel

9. В появившемся диалоговом окне Надстройки выберите Обзор.
A screenshot of the Add-ins dialog box in Excel

10. Найдите и выберите ранее сохранённый файл надстройки, затем нажмите OK.
A screenshot showing the selection of a custom Add-in file in Excel

11. Ваша пользовательская надстройка, например, «Convert Number To Words Add-in», теперь должна появиться в списке надстроек. Убедитесь, что она отмечена, и нажмите OK чтобы включить её.
A screenshot showing the custom add-in the Add-ins dialog box in Excel

12. Теперь снова введите пользовательскую функцию в целевую ячейку (например, в B2) и нажмите Enter. Вы должны увидеть, что формула возвращает правильные английские слова для числа.

=NumberstoWords(A2)

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

A screenshot showing the final result of the converted numbers to words

Советы и примечания:

  • Сохранение вашего макроса в виде надстройки позволяет использовать одни и те же пользовательские функции, код или автоматизацию во всех ваших книгах, экономя время и повышая согласованность.
  • Если Excel закрыт или надстройка позднее отключена, функции из надстройки могут временно показывать «#ИМЯ?», пока надстройка не будет загружена снова. Чтобы избежать путаницы, убедитесь, что надстройка всегда включена в менеджере надстроек, когда это необходимо.
  • Некоторые пользователи могут не видеть вкладку Разработчик по умолчанию. Чтобы включить её, щёлкните правой кнопкой мыши ленту, выберите «Настроить ленту» и отметьте опцию «Разработчик».
  • Хорошей практикой является хранение надстроек в постоянной папке, чтобы избежать пропусков ссылок при перемещении или переименовании файлов.

Если вы предпочитаете запускать код вручную, это также возможно и иногда полезно при отладке или для использования на лету:

  1. Вы можете назначить макрос на Панель быстрого доступа для однократного выполнения в любой видимой книге. Для этого щёлкните правой кнопкой мыши Панель быстрого доступа, выберите «Настроить Панель быстрого доступа», затем добавьте свой макрос.
    A screenshot showing how to add the VBA macro to the Quick Access Toolbar
  2. Вы также можете нажать Alt + F11, чтобы открыть редактор VBA, вручную выбрать свой макрос и нажать F5, чтобы запустить код по мере необходимости.

Преимущества: Это решение позволяет создавать и делиться богатым, многоразовым функционалом макросов, который всегда будет работать, если надстройка включена.
Недостатки: Пользователям нужно помнить о загрузке надстройки, и если книги передаются другим, также нужно передавать файл надстройки и детали функции. Кроме того, надстройки нельзя использовать в Excel Online.


Метод личной книги макросов

Ещё один очень практичный способ убедиться, что ваши любимые или наиболее часто используемые макросы готовы в каждом сеансе Excel, независимо от открытой книги, — это использование Личной книги макросов (PERSONAL.XLSB). Это специальный скрытый файл Excel, который автоматически загружается каждый раз при запуске Excel, позволяя любому макросу, хранящемуся внутри, быть доступным во всех открытых книгах.

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

Преимущества: Макросы доступны глобально для вашего локального профиля Excel и не требуют установки дополнительных надстроек или файлов.
Недостатки: Макросы, сохранённые таким образом, можно использовать только на том компьютере и в той учётной записи, где существует PERSONAL.XLSB. Обмен с другими пользователями требует экспорта и импорта модулей вручную.

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

Следуйте этим шагам:

  1. Откройте Excel. На вкладке Вид нажмите Макросы, затем Запись макроса.
  2. В диалоговом окне, в разделе «Сохранить макрос в», выберите Личная книга макросов. Завершите запись (вы можете сразу остановить запись, если это не требуется).
  3. Нажмите Alt + F11, чтобы войти в редактор VBA, где вы увидите проект для PERSONAL.XLSB. Здесь вставьте новый модуль или вставьте нужный код макроса.
  4. Сохраните изменения. Excel автоматически создаёт и поддерживает книгу PERSONAL.XLSB в своей стартовой папке.
  5. Макросы в PERSONAL.XLSB затем можно запустить через диалоговое окно Макросы (Alt + F8), назначить на кнопки ленты или панели инструментов или вызвать из VBA.

Устранение неполадок и обслуживание: Если макросы в PERSONAL.XLSB недоступны, проверьте, не запускается ли Excel в безопасном режиме или не установлены ли параметры безопасности макросов на «Отключить все макросы». Кроме того, PERSONAL.XLSB скрыт по умолчанию; если вы случайно закроете его без сохранения или удалите, вам может потребоваться перезаписать макрос для его воссоздания.

Совет: Регулярно создавайте резервные копии файла PERSONAL.XLSB. Вы можете найти его в папке профиля вашей системы, обычно:
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

Другие операции (Статьи)

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

Как запустить макрос VBA при открытии или закрытии книги?
В этой статье я расскажу вам, как запускать код VBA при каждом открытии или закрытии книги.

Как защитить / заблокировать код VBA в Excel?
Точно так же, как вы можете использовать пароль для защиты книг и листов, вы также можете установить пароль для защиты макросов в Excel.

Как использовать задержку времени после запуска макроса VBA в Excel?
В некоторых случаях вам может понадобиться таймер задержки для запуска макроса VBA в Excel. Например, при нажатии для запуска определённого макроса он вступит в силу через 10 секунд. Эта статья покажет вам метод достижения этого.

Лучшие инструменты для повышения продуктивности в Office

🤖 Kutools AI Aide: Переворот в анализе данных на основе: Интеллектуальное выполнение   |  Сгенерировать код  |  Создать Пользовательские Формулы  |  Анализ данных и генерация диаграмм  |  Вызов Kutools Functions
Популярные функции: Найти, выделить или отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячейки без потери данных   |   Округлить...
Супер ПОИСК: VLookup с несколькими критериями    VLookup с несколькими значениями  |   Многолистовой поиск   |   Распознавание нечетких соответствий ....
Расширенный раскрывающийся список: Быстро создать раскр. список   |  Зависимый раскрывающийся список   |  Множественный выбор в раскрывающемся списке ....
Менеджер столбцов: Добавить определенное количество столбцов  |  Переместить столбцы  |  Переключить статус видимости скрытых столбцов  |  Сравнить диапазоны и столбцы ...
Рекомендуемые функции: Сетка фокусировки   |  Дизайн листа   |   Улучшенная строка формулы    Управление книгой и листами   |  Библиотека автотекста (Auto Text)   |  Выбор даты   |  Объединить данные   |  Шифрование/Расшифровка ячеек    Отправить письмо по списку   |  Супер фильтр   |   Специальный фильтр (фильтр по жирному/курсиву/зачеркиванию...) ...
Топ–15 наборов инструментов: 12 текстовых инструментов (Добавить текст, Удалить определенные символы, ...)   |   50+ типов диаграмм (Диаграмма Ганта, ...)   |   40+ практических формул (Расчет возраста на основе даты рождения, ...)   |   19 инструментов вставки (Вставить QR-код, Вставить изображение из пути, ...)   |  12 инструментов преобразования (Преобразовать в слова, Конвертация валюты, ...)   |  7 инструментов объединения и разделения (Расширенное объединение строк, Разделить ячейки, ...)   |   ... и многое другое
Используйте Kutools на вашем предпочитаемом языке – поддерживаются английский, испанский, немецкий, французский, китайский и более40 других языков!

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


Office Tab добавляет вкладочный интерфейс в Office, делая вашу работу значительно проще

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна, а не в новых окнах.
  • Увеличьте свою продуктивность на50% и сократите сотни кликов мышью ежедневно!