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

Как подключить настройку vba excel

  • автор:

Как установить VBA в приложениях Microsoft Office

Некоторые приложения пакета Microsoft Office, такие как Word, Excel, Access, Outlook, позволяют использовать для решения пользовательских задач язык программирования Visual Basic for Applications (VBA).

Для того чтобы использовать возможности VBA, макросы, процедуры и надстройки, написанные на этом языке программирования, необходимо чтобы компонент Visual Basic для приложений был установлен вместе с приложениями пакета Microsoft Office.

Как проверить установлен ли Visual Basic для приложений?

Самый простой способ проверить наличие либо отсутствие установленного VBA это попробовать его запустить. Запустить VBA можно сочетанием клавиш Alt+F11 на клавиатуре, либо кнопкой «Visual Basic» на вкладке «Разработчик». По умолчанию вкладка «Разработчик» отключена во всех приложениях пакета Microsoft Office, поэтому предварительно ее нужно отобразить в настройках ленты.

Итак, если VBA установлен, то нажатие горячих клавиш либо кнопки «Visual Basic» на ленте приложения приводит к появлению окна редактора Visual Basic на экране монитора. Выглядит редактор примерно так, как показано на изображении ниже.

redaktor VBA v excel

В случае, если окно редактора не появилось, то компонент Visual Basic для приложений необходимо установить.

Как установить Visual Basic для приложений?

Чтобы установить компонент пакета Visual Basic for Applications, необходимо нажать кнопку Пуск, зайти в Панель управления/Программы и компоненты, выбрать программу Microsoft Office и нажать кнопку «Изменить», либо запустить установочный файл Setup.exe.

izmenit ustanovki programmy

Далее выбрать опцию «Добавить или удалить компоненты», в параметрах установки выбрать компонент Visual Basic для приложений и доустановить его.

How to enable VBA in Excel: Mac, Office 365

How to enable VBA in Excel: Mac, Office 365

Visual Basic for Applications, or VBA, is a Microsoft programming language that allows users to create scripts to execute certain actions or functions in a document by using Macros. It is most widely used in Excel to manage large quantities of data; however, other uses do exist. In this article we will show you how to activate VBA in Excel. These methods should work on both PC and Mac.

How to access VBA in Excel?

Access to VBA is turned off by default in Excel as a security precaution. Microsoft Office is vulnerable to Macro viruses, which can be spread to other documents if VBA is enabled. However, enabling VBA does not increase your likelihood of contracting a computer virus if you use it correctly and with caution.

To get started manipulating data, you will need to add the VBA add-in and enable access. This article will explain how to get started with VBA on your Windows computer.

How to activate the VBA add-in?

  • To enable/disable the VBA tool, first, open Excel, click Options and select Add-ins. In the list that displays, find the add-in Analysis ToolPalk — VBA, and select OK:

  • VBA add-in will now be active. Next, you must ensure the VBA tool is enabled.

How to enable or disable Access to VBA in Excel?

To enable/disable VBA tool, first open Excel, click Options, and find the Trust Center. Here, select the Trust Center Settings, and search for Macro Settings:

To enable access to VBA, ensure to check the option Trust access to the VBA project object model. To disable it, make sure that the box is unchecked:

Как создать свою надстройку для Microsoft Excel

Даже если вы не умеете программировать, то существует множество мест (книги, сайты, форумы), где можно найти готовый код макросов на VBA для огромного количества типовых задач в Excel. По моему опыту, большинство пользователей рано или поздно собирают свою личную коллекцию макросов для автоматизации рутинных процессов, будь то перевод формул в значения, вывод суммы прописью или суммирования ячеек по цвету. И тут встает проблема — код макросов на Visual Basic нужно где-то хранить, чтобы потом использовать в работе.

Самый простой вариант — сохранять код макросов прямо в рабочем файле, зайдя в редактор Visual Basic с помощью сочетания клавиш Alt + F11 и добавив новый пустой модуль через меню Insert — Module:

Добавление модуля в книгу

При таком способе возникает, однако, несколько неудобств:

  • Если рабочих файлов много, а макрос нужен везде, как например макрос преобразования формул в значения, то и копировать код придется в каждую книгу.
  • Нужно не забыть сохранить файл в формате с поддержкой макросов (xlsm) или в формате двоичной книги (xlsb).
  • При открытии такого файла защита от макросов будет каждый раз выдавать предупреждение, которое нужно подтвердить (ну, или отключить защиту полностью, что может быть не всегда желательно).

Более изящным решением будет создание своей собственной надстройки (Excel Add-in) — отдельного файла особого формата (xlam), содержащего все ваши «любимые» макросы. Плюсы такого подхода:

  • Достаточно будет один раз подключить надстройку в Excel — и можно будет использовать её VBA процедуры и функции в любом файле на этом компьютере. Пересохранять ваши рабочие файлы в xlsm- и xlsb-форматы, таким образом, не потребуется, т.к. исходный код будет храниться не в них, а в файле надстройки.
  • Защита от макросов вас тоже беспокоить уже не будет, т.к. надстройки по определению входят в доверенные источники.
  • Можно сделать отдельную вкладку на ленте Excel с красивыми кнопками для запуска макросов надстройки.
  • Надстройка — это отдельный файл. Его легко переносить с компьютера на компьютер, делиться им с коллегами или даже продавать 😉

Давайте рассмотрим весь процесс создания своей собственной надстройки для Microsoft Excel по шагам.

Шаг 1. Создаем файл надстройки

Открываем Microsoft Excel с пустой книгой и сохраняем ее под любым подходящим именем (например MyExcelAddin) в формате надстройки с помощью команды Файл — Сохранить как или клавиши F12 , указав тип файла Надстройка Excel (Excel Add-in):

Сохраняем файл в формате надстройки

Обратите внимание, что стандартно Excel хранит надстройки в папке C:\Users\Ваше_имя\AppData\Roaming\Microsoft\AddIns, но, в приниципе, можно указать любую другую удобную вам папку.

Шаг 2. Подключаем созданную надстройку

Теперь созданную нами на прошлом шаге надстройку MyExcelAddin надо подключить к Excel. Для этого идем в меню Файл — Параметры — Надстройки (File — Options — Add-Ins) , жмем на кнопку Перейти (Go) в нижней части окна. В открывшемся окне жмем кнопку Обзор (Browse) и указываем положение нашего файла надстройки.

Если вы все сделали правильно, то наша MyExcelAddin должна появиться в списке доступных надстроек:

Список надстроек

Шаг 3. Добавляем в надстройку макросы

Наша надстройка подключена к Excel и успешно работает, но в ней нет пока ни одного макроса. Давайте её наполним. Для этого нужно открыть редактор Visual Basic сочетанием клавиш Alt + F11 или кнопкой Visual Basic на вкладке Разработчик (Developer) . Если вкладки Разработчик не видно, то её можно отобразить через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) .

В левом верхнем углу редактора должно быть окно Project (если его не видно, то включите его через меню View — Project Explorer):

Project Explorer

В этом окне отображаются все открытые книги и запущенные надстройки Microsoft Excel, в том числе и наша VBAProject (MyExcelAddin.xlam) Выделите её мышью и добавьте в неё новый модуль через меню Insert — Module. В этом модуле мы и будем хранить VBA-код наших макросов надстройки.

Код можно либо набрать «с нуля» (если вы умеете программировать), либо скопировать откуда-нибудь уже готовый (что гораздо проще). Давайте, для пробы, введем в добавленный пустой модуль код простого, но полезного макроса:

Код макроса

После набора кода не забудьте нажать на кнопку сохранения (дискетку) в левом верхнем углу.

Наш макрос FormulasToValues, как легко сообразить, преобразует формулы в значения в выделенном предварительно диапазоне. Иногда такие макросы называют еще процедурами. Чтобы его запустить, нужно выделить ячейки с формулами и открыть специальное диалоговое окно Макросы с вкладки Разработчик (Developer — Macros) или сочетанием клавиш Alt + F8 . Обычно в этом окне отображаются доступные макросы из всех открытых книг, но макросы надстроек здесь не видны. Несмотря на это, мы можем ввести имя нашей процедуры в поле Имя макроса (Macro name) , а затем нажать кнопку Выполнить (Run) — и наш макрос заработает:

Запускаем макрос из надстройки Результат

Назначаем сочетание клавиш макросу

При назначении клавиш имейте ввиду, что здесь учитывается регистр и раскладка клавиатуры. Поэтому, если вы назначите сочетание, например, Ctrl + Й , то, по факту, вам придется в будущем следить за тем, чтобы у вас была включена именно русская раскладка и жать дополнительно Shift , чтобы получить заглавную букву.

Для удобства можно добавить и кнопку для нашего макроса на панель быстрого доступа в левом верхнем углу окна. Для этого выберите Файл — Параметры — Панель быстрого доступа (File — Options — Customize Quick Access Toolbar) , а затем в выпадающем списке в верхней части окна опцию Макросы. После этого наш макрос FormulasToValues можно поместить на панель кнопкой Добавить (Add) и выбрать для него значок кнопкой Изменить (Edit) :

Назначаем кнопку макросу на панели быстрого доступа

Шаг 4. Добавляем в надстройку функции

Кроме макросов-процедур, существуют еще и макросы-функции или как их еще называют UDF (User Defined Function = пользовательская функция). Давайте создадим в нашей надстройке отдельный модуль (команда меню Insert — Module) и вставим туда код такой функции:

Пользовательская функция

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

Заметьте, что синтаксис функции отличается от процедуры:

  • используется конструкция Function . End Function вместо Sub . End Sub
  • после названия функции в скобках указываются её аргументы
  • в теле функции производятся необходимые вычисления и затем результат присваивается переменной с названием функции

Также обратите внимание, что эту функцию не нужно, да и невозможно запустить как предыдущий макрос-процедуру через диалоговое окно Макросы и кнопку Выполнить. Такую макрофункцию нужно использовать как стандартную функцию листа (СУММ, ЕСЛИ, ВПР. ), т.е. просто ввести в любую ячейку, указав в качестве аргумента значение суммы с НДС:

Используем созданную UDF

. или ввести через стандартное диалоговое окно вставки функции (кнопка fx в строке формул), выбрав категорию Определенные пользователем (User Defined) :

Выбираем пользовательскую функцию

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

  1. Откройте редактор Visual Basic сочетанием клавиш Alt + F11
  2. Выделите надстройку в панели Project и нажмите клавишу F2 , чтобы открыть окно Object Browser
  3. Выберите в верхней части окна в выпадающем списке свой проект надстройки
  4. Щелкните по появившейся функции правой кнопкой мыши и выберите команду Properties.
  5. Введите описание функции в окно Description
  6. Сохраните файл надстройки и перезапустите Excel.

Добавляем свое описание для UDF

После перезапуска у функции должно отобразиться описание, которое мы ввели:

Описание функции

Шаг 5. Создаем вкладку надстройки в интерфейсе

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

Информация об отображаемых вкладках по умолчанию содержится внутри книги и должна быть оформлена в виде специального XML-кода. Проще всего писать и редактировать такой код с помощью специальных программ — XML-редакторов. Одна из самых удобных (и бесплатных) — это программа Максима Новикова Ribbon XML Editor.

Алгоритм работы с ней следующий:

  1. Закройте все окна Excel, чтобы не было конфликта файлов, когда мы будем редактировать XML-код надстройки.
  2. Запустите программу Ribbon XML Editor и откройте в ней наш файл MyExcelAddin.xlam
  3. При помощи кнопки tabs в левом верхнем углу добавьте заготовку кода для новой вкладки:

Добавляем новую вкладку для надстройки

Добавляем id и названия

Добавляем кнопку

Ссылки по теме

Доброго времени суток!
Давно ждал такого позновательного видео на эту тему! Спасибо!

Есть 2 вопроса, прошу помощи.

Подскажите пожалуйста, возможно ли как-то редактировать такую надстройку, например, добавить еще одну кнопку в свою вкладку? Или надо все делать с нуля?

Еще вопрос. Если у меня, например, есть перечень средних цен товаров, которые я хочу выводить на экран (быстро смотреть цену какого-то товара) через вот такую надстройку (чтобы всегда было под рукой), где хранить данный перечень? Перечень у меня на листе excel. Могу ли я создавать надстройку сразу с таким перечнем на листе и потом создать форму с быстрым поисковиком, которая будет вызываться через вкладку «Моя надстройка»?

;)

Так и быть, сам отвечу на свои вопросы:
1. Да, открываем надстройку через Ribbon XML Editor и продолжаем добовлять кнопки и что хотим.
2. Да! Для редактирования в свойствах книг IsAddin ставите False, надстройка будет отображаться с листами, как обычная книга. Добавляем сколько надо листов, делаете с ними что хотите, затем возвращаете свойство IsAddin в True, сохраняемся.

Как известно, «лишь тот разбирается в своём деле, кто может новичку объяснить смысл простыми словами. И он поймёт».
Как всегда блестяще, Николай! ))

P.S.: как ваше отчество? Развейте уже сомнения на форуме))))

Спасибо! Рад помочь.

:)

P.S. Владимировичи мы

:)

спасибо!

:cry:

Добрый день!
Спасибо, отличная статья!
Только не получилось сохранить описание к функции по извлечения НДС. У меня EXCEL 2016

Добрый день, господа.
Пользовался своей надстройкой XLA, все было хорошо, пока не потерял её. Со временем восстановил коды и по Вашему образцу сделал надстройку XLAM. Все работало до поры до времени, пока не добавил пару макросов (последний — массовая замена).
Не знаю, в этом ли причина, и где копать, но почти на все макросы у меня одна и та же ошибка вылезает:
«Method or data member not found», везде, где есть строчка кода » Selection. «
Глюк это или фича. голову ломаю
Хотел бы надстройку прикрепить, но здесь, как я понял, нет возможности

:D

Спасибо за информацию. Очень доступно и познавательно. Создал свою надстройку. Теперь буду в нее добавлять новые макросы. Кстати, можно импортировать из Personal.xlsb нужные модули с макросами, предварительно экспортируя их в какую-нибудь папку.

Подскажите пожалуйста, что делать, если понадобилось посмотреть/отредактировать содержимое листов надстройки?
Если я редактирую файл исходник xlsm и пересохраняю в xlam, то приходится заново рисовать интерфейс.
Спасибо

Добрый день! Николай, подскажите, пожалуйста, у меня при создании своей надстройки возникает следующая проблема: когда я сохраняю файл с расширением «надстройка Excel» ( в нем уже есть весь код), то он работает только в данной книге. Когда я открываю новую книгу (все остальные закрыты), то ексель просто не видит мой макрос Хотя сам файл с кодом я вижу в той папке в которую я его сохранил, вкладки, кнопки — все тоже есть. Как можно это исправить? надстройка подключена.

Как подключить настройку vba excel

Enabling the Developer Tab in Excel 2019

To use VBA, you need the «Developer» tab enabled. The «Developer» tab has several buttons and features that enhance the way you create spreadsheets. If you don’t have the «Developer» tab enabled, follow these next steps to enable it.

Click the «File» ribbon tab, and then click the «Options» link that shows in the bottom-left section of the Excel window. This opens a new configuration window where you can set preference for different elements of Excel. Click the «Customize Ribbon» option in the left panel.

(Excel options and configuration window)

In the image above, notice that the developer option is checked in the far right panel. This check box enables the «Developer» tab in your Excel view. Click «OK» to enable the tab and return to your Excel 2019 interface.

(VBA button location)

You should now see an additional tab marked «Developer» in the list of Excel 2019 menu options. Click this tab, and you’ll see the VBA button available on the left side.

Creating a Button on Your Spreadsheet

When you want to use VBA on your spreadsheet, buttons are one of the most common elements that you add to your document. With a button, you can trigger an event and use it to perform an action.

Components for VBA actions are found in the «Developer» tab in the «Insert» button dropdown.

(Form and ActiveX components for VBA)

When you click the «Insert» button, a dropdown displays all of the available components that you can add to your spreadsheets. The top-left control in the «Form Controls» section has the button control. You can hover your mouse over each of the components in the list to see what you can add to a spreadsheet. If you are familiar with HTML web page components, then you will recognize most of the available components in the dropdown.

Click the button control and then you can draw the button on your spreadsheet. Drawing a button lets you make it as large as small as you want. After you draw the button, a window opens where you can assign a macro.

(Assign macro window)

Click «OK» and the window closes. Now you see a button on your spreadsheet with the label «Button 1.» You can change the label on the newly created button by right-clicking the button and selecting «Edit Text.» This action prompts you for the new button name. Type a new name for your button. In this example, we’ve used the text «My Button» for the button text.

(A new button with custom text)

You can click the button if you want, and an error message with display telling you that you haven’t created a macro for it yet. This is because you haven’t created the code that will run when the button is clicked. The button serves no purpose, but you can create the macro that runs when it’s pushed, which then removes the error when you click the button.

Right click the button and choose «Assign Macro.» This action opens a Visual Basic for Applications workspace. The workspace is tied to the workbook that you have open, but you can make full applications that tie with your spreadsheet using VBA. In this workspace, you can create, test, and run any code that you assign to components in your application.

Working in the VBA Workspace

The VBA workspace looks the same whether you program macros in Word or Excel. It’s a workspace where you can program the macro and view all other code that you’ve previously created.

The image above shows the VBA workspace. When you right click a component such as a button and choose «Edit Code,» VBA opens to the location where code is triggered when you click the button. VBA gives names to these functions that help you identify what happens should you perform an activity on it. Since a button is usually triggered by a click event, the function is given the original name of the button, an underscore, and then the word «Click.» For your first button created in your spreadsheet, the name for a click event is «Button1_Click()» and you add any code between the «Sub» and «End Sub» phrases.

The «Sub» keyword indicates that you are starting an event. The next part is the name of the event, and the last statement in a trigger event is the «End Sub» statement.

In the left panel of the workspace, you can see other objects in a tree view. The top object is always the workbook. If you recall, a workbook contains worksheet. Under the «Book1» main project header, you see «ThisWorkbook» which represents the workbook that you have opened, and the «Sheet1» represents the worksheet in the workbook. You can write VBA that works directly on a workbook or a worksheet activity such as when you open the workbook, a macro automatically runs.

The «Modules» section holds the files that you store containing VBA code. You can have several of these in your VBA code, or you can just have one file that contains all of the functions used to run macros.

Writing Some Simple VBA Code

With the VBA editor open, you now have a function ready to edit for your button. Anything you type in the «Sub» and «End Sub» statements will run when you click the Button1 component. When you start working with VBA, you want to create easy function statements so that you can follow what is going on as the code runs. In this example, we’ll add some text to a cell within the current spreadsheet.

Within the sub start and end phrases, type the following code:

Range(«A1»).Value = «My Test»

The code above tells Excel 2019 that you want to change the value contained in the cell «A1» in the current sheet to «My Test.» The «Range» indicates that you want to apply changes to a cell range set in the functions parameters. You can assign any value to a range, but in this example we apply text. Any formatting already set on the cell will also still apply, so if you have a cell set to bold text, then this value will have the bold format applied.

At the top of the VBA workspace, notice that there are three start, pause and stop buttons. You can use these buttons to test your new code. The «start» button will run the current function and apply changes to the spreadsheet, which in this example is changing content to «My Test.»

(The start button in the VBA workspace)

Click the start button and watch the text in the A1 cell change to «My Test.» Should you have a long list of statements within your function, you might want to pause the procedure. The stop button stops execution, so should you resume it then execution will start where it left off. With the pause button, execution resumes where the last statement left off.

The «MsgBox» function is extremely common in any application. The MsgBox function displays a warning or a message to the user. In any software application, you’ve seen pop-up windows that display a message that provides information. Even web applications display messages as pop-ups and warnings. The MsgBox function in VBA is the equivalent of all of these pop-ups that you’ve seen across different applications.

Suppose that you want to show a confirmation to the user that the button’s function completed execution. In this example, only one statement executes, but you might have hundreds of lines of code that must execute and you want to show the user that it’s completed. You might have a procedure that takes an unusual amount of time to complete, so users must wait for it to complete and then you display the message to confirm when the procedure is over.

Add the next line of code to the same VBA function Button1_Click():

Range(«A1»).Value = «My Test»

MsgBox «Cell value change finished»

In the code above, the cell A1 has its value changed to «My Test.» After the text is changed in the A1 cell, a message box opens and displays the text «Cell value change finished.» This is just a small example of how you can use the MsgBox function. After you finished changing your VBA code, click the play button again. You will see the two statements run, and the program will stop.

After you are finished writing your code, you still need to save it and test it within the spreadsheet. Your users won’t open the VBA workspace, so you need to make sure that the code executes outside of the VBA workspace.

Close the VBA workspace. You now need to assign the macro to the button. Right-click the button and click «Assign Macro.» Choose the Button1_Click value and click «OK.» Should you ever want to go back and change the statements executed by the macro. Use this screen to click the macro name, and then click «Edit» to again open the VBA workspace with the function code shown in the workspace window.

After the window closes, click the button. Notice that the text in cell A1 changes and then a window displays with a message that the procedure has completed. You’ve just created your first VBA macro that runs in your spreadsheet. You can create much more complex applications with VBA that run across several spreadsheets and can affect several other workbooks that aren’t even open on your desktop.

One issue to remember with VBA is that it’s a powerful tool that can do harm if it’s used the wrong way. Malware writers use VBA macros to download malicious software and install it on your computer. When you work with macros, your recipients of any spreadsheet must give your macros permission to run on their machines. Most users are trained not to open spreadsheets with macros, so they are mostly used within the same organization.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *