Как вызвать visual basic в excel
Перейти к содержимому

Как вызвать visual basic в excel

  • автор:

Запуск макроса

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel Starter 2010 Еще. Меньше

Существует несколько способов запуска макроса в Microsoft Excel. Макрос — это действие или набор действий, с помощью которых можно автоматизировать различные задачи. Макросы записываются на языке программирования Visual Basic для приложений. Макрос всегда можно запустить, щелкнув команду Макросы на вкладке Разработчик на ленте. В зависимости от того, как макрос назначен для выполнения, вы также можете запустить его, нажав сочетание сочетание клавиш, нажав кнопку на панели быстрого доступа или в настраиваемой группе на ленте или щелкнув объект, рисунок или элемент управления. Кроме того, макрос можно запускать автоматически при открытии книги.

Перед запуском макроса

Перед началом работы с макросами необходимо включить вкладку Разработчик .

  • Для Windows перейдите в раздел Параметры >файлов >настройка ленты.
  • Для Mac перейдите в раздел Параметры> Excel. >лента & панели инструментов.
  • Затем в разделе Настройка ленты в разделе Основные вкладки проверка поле Проверка разработчика и нажмите кнопку ОК.

Запуск макроса на вкладке «Разработчик»

  1. Откройте книгу, содержащую нужный макрос.
  2. На вкладке Разработчик в группе Код нажмите кнопку Макросы.
  3. В поле Имя макроса щелкните макрос, который нужно запустить, и нажмите кнопку Выполнить .
  4. У вас также есть другие варианты:
    • Параметры . Добавление сочетания клавиш или описания макроса.
    • Шаг . Откроется редактор Visual Basic в первой строке макроса. Нажатие клавиши F8 позволит выполнить пошаговое выполнение макрокода по одной строке за раз.
    • Изменить . Откроется редактор Visual Basic и вы сможете редактировать код макроса по мере необходимости. После внесения изменений можно нажать клавишу F5 , чтобы запустить макрос из редактора.

Выполнение макроса путем нажатия сочетания клавиш

Вы можете добавить сочетание клавиш в макрос при его записи, а также добавить ее в существующий макрос:

  1. На вкладке Разработчик в группе Код нажмите кнопку Макросы.
  2. В поле Имя макроса щелкните макрос, который нужно назначить сочетанию клавиш.
  3. Нажмите кнопку Параметры. Откроется диалоговое окно Параметры макроса.
  4. В поле Сочетание клавиш введите любую строчную или прописную букву, которую вы хотите использовать с сочетанием клавиш.

  • В Windows сочетание клавиш для строчных букв — ctrl+letter. Для прописных букв это CTRL+SHIFT+Буква.
  • Для Mac сочетание клавиш для строчных букв — Option+Command+letter, но ctrl+letter также будет работать. Для прописных букв это CTRL+SHIFT+Буква.
  • Будьте осторожны при назначении сочетаний клавиш, так как они переопределяют любой эквивалентный сочетания клавиш Excel по умолчанию, пока открыта книга, содержащая макрос. Например, если назначить макрос ctrl+z, вы потеряете возможность отмены. Поэтому обычно рекомендуется использовать сочетание клавиш CTRL+SHIFT+ПРОПИСНЫЕ буквы , например CTRL+SHIFT+Z, которое не имеет эквивалентного сочетания клавиш в Excel.

Список сочетаний клавиш CTRL , которые уже назначены в Excel, см. в статье Сочетания клавиш и функциональные клавиши Excel.

Запустите макрос, нажав кнопку на панели быстрого доступа

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

Запустите макрос, нажав кнопку в настраиваемой группе на ленте

Можно создать пользовательскую группу, которая отображается на вкладке ленты, а затем назначить макрос кнопке в этой группе. Например, можно добавить настраиваемую группу «Мои макросы» на вкладку Разработчик, а затем добавить макрос (который отображается как кнопка) в новую группу. Для этого см. раздел Назначение макроса кнопке.

Запустите макрос, щелкнув область графического объекта

Запустите макрос, щелкнув область графического объекта

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

  1. На листе вставьте графический объект, например рисунок, или нарисуйте фигуру. Распространенный сценарий — нарисовать фигуру прямоугольника с округлением и отформатировать ее таким образом, чтобы она выглядела как кнопка. Сведения о вставке графического объекта см. в статье Добавление, изменение и удаление фигур.
  2. Щелкните правой кнопкой мыши созданную точку доступа и выберите пункт Назначить макрос.
  3. Выполните одно из следующих действий:
  4. Чтобы назначить существующий макрос графическому объекту, дважды щелкните макрос или введите его имя в поле Имя макроса .
  5. Чтобы записать новый макрос для назначения выбранному графическому объекту, нажмите кнопку Запись, введите имя макроса в диалоговом окне Запись макроса и нажмите кнопку ОК , чтобы начать запись макроса. Завершив запись макроса, нажмите кнопку Остановить запись

на вкладке Разработчик в группе Код .

Совет: Вы также можете нажать кнопку Остановить запись

в левой части строки состояния.

Запуск макроса из редактора Visual Basic (VBE)

На вкладке Разработчик щелкните Visual Basic, чтобы запустить редактор Visual Basic (VBE). Перейдите в Обозреватель Project в модуль, содержащий макрос, который требуется запустить, и откройте его. Все макросы в этом модуле будут перечислены в области справа. Выберите макрос, который требуется запустить, поместив курсор в любое место макроса, и нажмите клавишу F5 или в меню перейдите в раздел Запуск > запустить макрос.

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

Создайте событие Workbook_Open.

В следующем примере событие Open используется для запуска макроса при открытии книги.

  1. Откройте или создайте книгу, в которую нужно добавить макрос.
  2. На вкладке Разработчик в группе Код нажмите кнопку Visual Basic.
  3. В окне Проект Обозреватель щелкните правой кнопкой мыши объект ThisWorkbook и выберите пункт Просмотреть код.

Совет: Если окно Проект Обозреватель не отображается, в меню Вид выберите пункт Проект Обозреватель.

Private Sub Workbook_Open()

Примечание: Ячейка A1 на Листе1 также содержит дату в результате выполнения процедуры Workbook_Open.

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

Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.

Поиск справки по использованию редактора Visual Basic

Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Access для Microsoft 365 Visio, план 2 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Access 2021 Visio профессиональный 2021 Visio стандартный 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Access 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Access 2016 Visio профессиональный 2016 Visio стандартный 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Access 2013 Visio профессиональный 2013 Visio 2013 Еще. Меньше

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

Пошаговое руководство. Вызов кода из VBA в проекте Visual Basic

В этом пошаговом руководстве показано, как вызвать метод в настройке на уровне документа для Microsoft Office Word из кода Visual Basic для приложений (VBA) в документе. Данная процедура состоит из трех основных этапов: добавление метода в класс ведущего элемента ThisDocument , представление метода коду VBA и вызов метода из кода VBA в документе.

Область применения. Сведения в этом разделе относятся к проектам уровня документа для Excel и Word. Дополнительные сведения см. в разделе «Функции», доступные по Приложение Office ликации и типу проекта.

Хотя в этом пошаговом руководстве используется Word, рассмотренная процедура также применима к проектам на уровне документа для Excel.

В этом пошаговом руководстве рассматриваются следующие задачи:

  • создание документа, содержащего код VBA;
  • предоставление доверия расположению документа с помощью центра управления безопасностью в Word;
  • Добавление метода в класс ведущего элемента ThisDocument
  • представление метода коду VBA;
  • Вызов метода из кода VBA

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

Необходимые компоненты

Для выполнения этого пошагового руководства требуются следующие компоненты:

  • Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье «Настройка компьютера для разработки решений Office».
  • Microsoft Word

Создание документа, содержащего код VBA

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

Если у вас уже есть документ, содержащий код VBA, который необходимо использовать, данный шаг можно пропустить.

Создание документа, содержащего код VBA

  1. Запустите приложение Word.
  2. Сохраните активный документ в виде документа с поддержкой макросов Word (*.docm) с именем DocumentWithVBA. Сохраните ее в удобном месте, например на рабочем столе.
  3. На ленте перейдите на вкладку Разработчик .

Примечание. Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе «Практическое руководство. Отображение вкладки разработчика на ленте».

Sub EmptySub() End Sub 

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

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

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

  1. Запустите среду Visual Studio.
  2. В меню Файл укажите Создать, затем нажмите Проект. Если интерфейс IDE настроен на использование параметров разработки Visual Basic, последовательно выберите в меню Файл пункт Создать проект.
  3. В области шаблонов разверните узел Visual Basic, а затем узел Office/SharePoint.
  4. Выберите узел Надстройки Office .
  5. В списке шаблонов проектов выберите проект Документ Word 2010 или Документ Word 2013 .
  6. В поле Имя введите CallingCodeFromVBA.
  7. Щелкните OK. Откроется Мастер проектов набора средств Visual Studio для Office .
  8. Выберите Скопировать существующий документи в поле Полный путь к существующему документу укажите расположение документа DocumentWithVBA , созданного ранее. Если вы используете собственный документ с поддержкой макросов, укажите его расположение.
  9. Нажмите кнопку Готово. Visual Studio открывает документ DocumentWithVBA в конструкторе и добавляет проект CallingCodeFromVBA в Обозреватель решений.

Доверие к расположению документа

Перед предоставлением кода в своем решении коду VBA в документе необходимо предоставить доверие VBA на выполнение в документе. Для этого существует несколько способов. В целях этого пошагового руководства предоставьте доверие расположению документа в Центре управления безопасностью в Word.

Предоставление доверия расположению документа

  1. Запустите приложение Word.
  2. Перейдите на вкладку Файл .
  3. Нажмите кнопку Параметры Word .
  4. В области категорий нажмите Центр управления безопасностью.
  5. В области сведений нажмите Параметры центра управления безопасностью.
  6. В области категорий нажмите Надежные расположения.
  7. В области сведений нажмите Добавить новое расположение.
  8. В диалоговом окне Надежное расположение Microsoft Office перейдите в папку, содержащую проект CallingCodeFromVBA .
  9. Установите флажок Также доверять всем вложенным папкам.
  10. В диалоговом окне Надежное расположение Microsoft Office нажмите кнопку ОК.
  11. В диалоговом окне Центр управления безопасностью нажмите кнопку ОК.
  12. В диалоговом окне Параметры Word нажмите кнопку ОК.
  13. Закройте программу Word.

Добавление метода в класс ThisDocument

Теперь, когда проект VBA настроен, добавьте метод в класс ведущего элемента ThisDocument , который можно вызвать из кода VBA.

Добавление метода в класс ThisDocument

  1. В обозревателе решенийщелкните правой кнопкой мыши ThisDocument.vbи выберите пункт Просмотреть код. В редакторе кода открывается файл ThisDocument.vb .
  2. Добавьте приведенный ниже метод в класс ThisDocument . Этот метод создает таблицу с двумя строками и столбцами в начале документа. Параметры указывают текст, который отображается в первой строке. Далее в этом пошаговом руководстве данный метод будет вызываться из кода VBA в документе.
Public Sub CreateTable(ByVal firstColumnHeader As String, _ ByVal secondColumnHeader As String) Me.Paragraphs(1).Range.InsertParagraphBefore() Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2) With table1 .Style = "Table Professional" .Cell(1, 1).Range.Text = firstColumnHeader .Cell(1, 2).Range.Text = secondColumnHeader End With End Sub 

Предоставление метода коду VBA

Для предоставления метода CreateTable коду VBA в документе установите для свойства EnableVbaCallers ведущего элемента ThisDocument значение True.

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

  1. В обозревателе решенийдважды щелкните файл ThisDocument.vb. Файл DocumentWithVBA откроется в конструкторе.
  2. В окне Свойства выберите свойство EnableVbaCallers и установите значение True.
  3. Появляется сообщение, в котором следует нажать кнопку ОК .
  4. Выполните сборку проекта.

Вызов метода из кода VBA

Теперь можно вызвать метод CreateTable из кода VBA в документе.

В этом пошаговом руководстве будет добавлен код VBA в документ во время отладки проекта. Код VBA, добавляемый в этот документ, будет перезаписан в следующий раз при построении проекта, так как Visual Studio заменяет документ в выходной папке сборки копией документа из главной папки проекта. Если код VBA необходимо сохранить, его можно скопировать в документ в папке проекта. Дополнительные сведения см. в разделе «Объединение настроек VBA и уровня документа».

Вызов метода из кода VBA

  1. Нажмите клавишу F5 для запуска проекта.
  2. На вкладке Разработчик в группе Код щелкните элемент Visual Basic. Открывается редактор Visual Basic.
  3. В меню Вставить выберите пункт Модуль.
  4. Добавьте в новый модуль следующий код: Этот код вызывает метод CreateTable в сборке настройки. Макрос обращается к этому методу с помощью свойства CallVSTOAssembly объекта ThisDocument . Это свойство было автоматически создано ранее при установке значения для свойства EnableVbaCallers в этом пошаговом руководстве.
Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End Sub 

Следующие шаги

Дополнительные сведения о вызове кода в решениях Office из VBA см. в следующих разделах:

  • Вызов кода в настройке Visual Basic из VBA. Этот процесс отличается от процесса Visual Basic. Дополнительные сведения см. в пошаговом руководстве. Код вызова из VBA в проекте Visual C#.
  • Вызов кода в надстройке VSTO из VBA. Дополнительные сведения см. в пошаговом руководстве. Код вызова в надстройке VSTO из VBA.

Связанный контент

  • Объединение настроек VBA и уровня документов
  • Настройки уровня документа программы
  • Практическое руководство. Предоставление кода VBA в проекте Visual Basic
  • Практическое руководство. Предоставление кода VBA в проекте Visual C#
  • Пошаговое руководство. Вызов кода из VBA в проекте Visual C#

Динамическое добавление и запуск макроса VBA из Visual Basic

При автоматизации Office продукта из Visual Basic может быть полезно переместить часть кода в модуль Microsoft Visual Basic для приложений (VBA), который может запускаться в пространстве процессов сервера. Это может повысить общую скорость выполнения приложения и решить проблемы, если сервер выполняет действие только при выполнении вызова.

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

Дополнительная информация

В следующем примере показано, как вставить модуль кода в Microsoft Excel, но для Word и PowerPoint можно использовать один и тот же модуль VBA.

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

Начиная с Microsoft Office XP, пользователь должен предоставить доступ к объектной модели VBA, чтобы любой код автоматизации, написанный для управления VBA, работал. Это новая функция безопасности с Office XP. Дополнительные сведения см. в следующей статье базы знаний:

282830 Программный доступ к Office XP VBA Project отклонен

Шаги по построению примера

  1. Сначала создайте новый текстовый файл с именем KbTest.bas (без .txt расширения). Это модуль кода, который мы вставляем в Excel во время запуска.
  2. В текстовом файле добавьте следующие строки кода:

Attribute VB_Name = «KbTest»

‘ Your Microsoft Visual Basic for Applications macro function takes 1
‘ parameter, the sheet object that you are going to fill.

Public Sub DoKbTest(oSheetToFill As Object)
Dim i As Integer, j As Integer
Dim sMsg As String
For i = 1 To 100
For j = 1 To 10

sMsg = «Cell(» & Str(i) & «,» & Str(j) & «)»
oSheetToFill.Cells(i, j).Value = sMsg
Next j
Next i
End Sub

  • В Microsoft Office Excel 2007 выберите библиотеку 12.0.
  • В Microsoft Office Excel 2003 выберите библиотеку 11.0.
  • В Microsoft Excel 2002 выберите библиотеку 10.0.
  • В Microsoft Excel 2000 выберите библиотеку 9.0.
  • Для Microsoft Excel 97 выберите библиотеку 8.0.

Private Sub Command1_Click()
Dim oXL As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim i As Integer, j As Integer
Dim sMsg As String

‘ Create a new instance of Excel and make it visible.
Set oXL = CreateObject(«Excel.Application»)
oXL.Visible = True

‘ Add a new workbook and set a reference to Sheet1.
Set oBook = oXL.Workbooks.Add
Set oSheet = oBook.Sheets(1)

‘ Demo standard Automation from out-of-process,
‘ this routine simply fills in values of cells.
sMsg = «Fill the sheet from out-of-process»
MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

For i = 1 To 100
For j = 1 To 10
sMsg = «Cell(» & Str(i) & «,» & Str(j) & «)»
oSheet.Cells(i, j).Value = sMsg
Next j
Next i

‘ You’re done with the first test, now switch sheets
‘ and run the same routine via an inserted Microsoft Visual Basic
‘ for Applications macro.
MsgBox «Done.», vbMsgBoxSetForeground
Set oSheet = oBook.Sheets.Add
oSheet.Activate

sMsg = «Fill the sheet from in-process»
MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

‘ The Import method lets you add modules to VBA at
‘ run time. Change the file path to match the location
‘ of the text file you created in step 3.
oXL.VBE.ActiveVBProject.VBComponents.Import «C:\KbTest.bas»

‘ Now run the macro, passing oSheet as the first parameter
oXL.Run «DoKbTest», oSheet

‘ You’re done with the second test
MsgBox «Done.», vbMsgBoxSetForeground

‘ Turn instance of Excel over to end user and release
‘ any outstanding object references.
oXL.UserControl = True
Set oSheet = Nothing
Set oBook = Nothing
Set oXL = Nothing

End Sub

  • В Excel 2007 нажмите кнопку Microsoft Office и выберите Excel параметры. Щелкните Центр управления доверием и выберите центр управления Параметры. Нажмите кнопку Параметры, щелкните, чтобы выбрать поле Доверять доступу к объектной модели проекта VBA, а затем нажмите кнопку ОК два раза.
  • В Excel 2003 и более ранних версиях Excel пункт Макрос в меню Инструменты и нажмите кнопку Безопасность. В диалоговом окне Безопасность перейдите на вкладку Надежные источники и выберите Visual Basic Project доступ.

Ссылки

Дополнительные сведения об автоматизации Office от Visual Basic см. на сайте Office поддержки разработки по следующему адресу:

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

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