Выбор и активация ячеек
В Microsoft Excel обычно выбирается ячейка или ячейки, а затем выполняется действие, например форматирование ячеек или ввод значений. В Visual Basic обычно не требуется выбирать ячейки перед их изменением.
Например, чтобы ввести формулу в ячейку D6 с помощью Visual Basic, не нужно выбирать диапазон D6. Просто возвратите объект Range для этой ячейки, а затем присвойте свойству Formula нужную формулу, как показано в следующем примере.
Sub EnterFormula() Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)" End Sub
Дополнительные сведения и примеры использования других методов для управления ячейками без их выбора см. в разделе Практическое руководство. Ссылка на ячейки и диапазоны.
Использование метода Select и свойства Selection
Метод Select активирует листы и объекты на листах; свойство Selection возвращает объект, представляющий текущее выделение на активном листе в активной книге. Перед использованием свойства Selection необходимо активировать книгу, активировать или выбрать лист, а затем выбрать диапазон (или другой объект) с помощью метода Select.
Средство записи макросов часто создает макрос, использующий метод Select и свойство Selection. Следующая процедура Sub была создана с помощью средства записи макросов и показывает, как Select и Selection работают вместе.
Sub Macro1() Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True End Sub
В следующем примере выполняется та же задача без активации или выбора листа или ячеек.
Sub Labels() With Worksheets("Sheet1") .Range("A1") = "Name" .Range("B1") = "Address" .Range("A1:B1").Font.Bold = True End With End Sub
Выбор ячеек на активном листе
Если для выбора ячеек используется метод Select, имейте в виду, что Select работает только на активном листе. Если выполнить процедуру Sub из модуля, метод Select завершится ошибкой, если процедура не активирует лист перед использованием метода Select для диапазона ячеек. Например, следующая процедура копирует строку из Листа1 в Лист2 в активной книге.
Sub CopyRow() Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste End Sub
Активация ячейки в выделенном фрагменте
Используйте метод Activate для активации ячейки в выделенном фрагменте. Активной может быть только одна ячейка, даже если выделен диапазон ячеек. Следующая процедура выделяет диапазон и активирует ячейку в диапазоне, не изменяя выделенный фрагмент.
Sub MakeActive() Worksheets("Sheet1").Activate Range("A1:D4").Select Range("B2").Activate End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?
Включение доступа к VBA для создания или открытия Инструменты Visual Studio для проекта системы Microsoft Office
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Перед созданием или открытием Инструменты Visual Studio для проекта Microsoft Office необходимо явно включить доступ к системе проектов Visual Basic для приложений (VBA).
Для проектов разработки Microsoft Office требуется доступ к системе проектов Visual Basic для приложений (VBA) в Microsoft Office Word и Microsoft Office Excel, даже если проекты не используют Visual Basic для приложений. Поддержка элементов управления времени разработки в проектах Visual Basic и C# зависит от системы проектов Visual Basic для приложений.
Некоторые макровирусы Microsoft Office пытаются автоматизировать систему проектов Visual Basic для приложений как способ своего распространения. Разрешая доступ к системе проектов Visual Basic для приложений, вы отключаете средство защиты, которое позволяет предотвратить распространение макровирусов. Тем не менее, остаются стандартные средства обеспечения безопасности макросов: уровень безопасности макросов и список надежных издателей, поддерживаемый для приложений Office, помогут выявить выполнение макросов на компьютере.
Это касается только компьютера разработки. Компьютеры конечных пользователей не нуждаются в этом параметре для запуска решений Office.
Важно отметить, что отключение доступа к системе проектов Visual Basic для приложений само по себе не защитит вас от вирусов, оно просто помогает предотвратить распространение некоторых вирусов в другие документы в случае заражения компьютера макровирусом. Эта возможность отключена по умолчанию, что обеспечивает дополнительный уровень защиты компьютера. Однако ее включение не делает ваш компьютер более подверженным атакам, если вы выполняете рекомендации по обеспечению безопасности.
Лучшая защита от вирусов макросов Office — запуск Office на высоком или очень высоком уровне безопасности, только доверять макросам из проверенных, известных источников и поддерживать актуальность с помощью исправлений безопасности и сканеров вирусов.
Вы можете включить или отключить параметр Trust Access to Visual Basic Project вручную.
При появлении ошибок VBA или COM можно восстановить установку Office.
Заинтересованы в разработке решений, которые расширяют возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшое пространство по сравнению с надстройками и решениями VSTO, и вы можете создавать их практически с помощью любой технологии веб-программирования, таких как HTML5, JavaScript, CSS3 и XML.
Включение или отключение доступа к проектам Visual Basic
- Перейдите на вкладку Файл .
- Щелкните Параметры.
- Щелкните Центр управления безопасностью и щелкните центр управления безопасностью Параметры.
- В Центре управления безопасностью щелкните макрос Параметры.
- Проверьте или не проверка Доверять доступу к объектной модели проекта VBA, чтобы включить или отключить доступ к проектам Visual Basic.
- Щелкните OK.
Включение или отключение доступа к проектам Visual Basic с помощью системы Microsoft Office 2007
- В меню «Сервис» в Word или Excel наведите указатель мыши на макрос и нажмите кнопку «Безопасность«.
- В диалоговом окне «Безопасность» откройте вкладку «Доверенные издатели«.
- Выберите, чтобы включить или очистить, чтобы отключить, trust Access to Visual Basic Project.
- Щелкните OK.
Настройка уровня безопасности макросов в Office
- Перейдите на вкладку Файл .
- Щелкните Параметры.
- Щелкните Центр управления безопасностью и щелкните центр управления безопасностью Параметры.
- В Центре управления безопасностью щелкните макрос Параметры.
- В разделе «Макрос Параметры» выберите нужный параметр.
- Щелкните OK.
Настройка уровня безопасности макросов Office с помощью системы Microsoft Office 2007
- В меню «Сервис» в Word или Excel наведите указатель мыши на макрос и нажмите кнопку «Безопасность«.
- На вкладке «Уровень безопасности» выберите нужный параметр. Вкладка «Уровень безопасности» содержит сведения о каждом уровне. Дополнительные сведения см. в разделе «Уровни безопасности макросов» справки Microsoft Office.
Установка VBA в выпуске 2007 системы Microsoft Office
- В панель управления запустите команду «Добавить или удалить программы» или «Программы и компоненты«.
- Выберите Office в списке установленных программ .
- Щелкните Изменить.
- Выберите » Добавить или удалить компоненты» и нажмите кнопку «Продолжить«.
- Нажмите кнопку «Выбрать расширенную настройку приложений» и нажмите кнопку «Далее«.
- Разверните общие функции Office в списке «Выбор параметров обновления» для приложений и инструментов.
- Откройте раскрывающееся меню рядом с Visual Basic для приложений и нажмите кнопку «Запустить с моего компьютера«.
- Нажмите кнопку Продолжить.
- Нажмите кнопку Закрыть.
Восстановление установки Office
- В панель управления запустите команду «Добавить или удалить программы» или «Программы и компоненты«.
- Выберите свою версию Office в списке установленных программ .
- Щелкните Изменить.
- Выберите «Переустановить » или «Восстановить«, а затем нажмите кнопку «Далее«.
- Выберите » Обнаружить и восстановить ошибки» в моей установке Office и нажмите кнопку «Установить«.
См. также
Автоматический запуск макроса при открытии книги
Может потребоваться, чтобы макрос, записанный вами, запускался автоматически при запуске определенной книги. В следующей процедуре используется пример, чтобы показать, как это работает. Кроме того, может потребоваться автоматически запускатьмакрос при Excel запуска .
Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.

- Откройте вкладку Разработчик и щелкните элемент Visual Basic.
- В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook. Если вы не видите обозреватель Project, перейдите в >Project проводникаили нажмите CTRL+R.
- В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Для этого:
- В меню выберите пункт Параметры Excel >. >ленты & панели инструментов.
- В категории Настройка ленты в списке Основные вкладки выберите вариант Разработчик.
- Нажмите кнопку Сохранить.
Чтобы использовать пример ниже, откройте новую книгу.
Важно: Код VBA нельзя отменить, поэтому проверьте код в пустой книге или копии существующей книги. Если код не работает, вы можете закрыть книгу без сохранения изменений.
- Откройте вкладку Разработчик и щелкните элемент Visual Basic.
- В обозревателе VBA Project слева разверните папку VBA Project книги, а затем дважды щелкните модуль ThisWorkbook.
- В окне модуля, которое открывается справа, вставьте следующий код:
Private Sub Workbook_Open() ' Put your code here End Sub
При следующем запуске книги код, добавленный в Workbook_Open, будет работать автоматически.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Пошаговое руководство. Вызов кода из VBA в проекте Visual Basic
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
В этом пошаговом руководстве показано, как вызвать метод в настройке на уровне документа для 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
- Запустите приложение Word.
- Сохраните активный документ в виде документа с поддержкой макросов Word (*.docm) с именем DocumentWithVBA. Сохраните ее в удобном месте, например на рабочем столе.
- На ленте перейдите на вкладку Разработчик .
Примечание. Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе «Практическое руководство. Отображение вкладки разработчика на ленте».
Sub EmptySub() End Sub
Создание проекта
Теперь можно создать проект на уровне документа для Word, который использует созданный ранее документ с поддержкой макросов.
Создание проекта
- Запустите среду Visual Studio.
- В меню Файл укажите Создать, затем нажмите Проект. Если интерфейс IDE настроен на использование параметров разработки Visual Basic, последовательно выберите в меню Файл пункт Создать проект.
- В области шаблонов разверните узел Visual Basic, а затем узел Office/SharePoint.
- Выберите узел Надстройки Office .
- В списке шаблонов проектов выберите проект Документ Word 2010 или Документ Word 2013 .
- В поле Имя введите CallingCodeFromVBA.
- Щелкните OK. Откроется Мастер проектов набора средств Visual Studio для Office .
- Выберите Скопировать существующий документи в поле Полный путь к существующему документу укажите расположение документа DocumentWithVBA , созданного ранее. Если вы используете собственный документ с поддержкой макросов, укажите его расположение.
- Нажмите кнопку Готово. Visual Studio открывает документ DocumentWithVBA в конструкторе и добавляет проект CallingCodeFromVBA в Обозреватель решений.
Доверие к расположению документа
Перед предоставлением кода в своем решении коду VBA в документе необходимо предоставить доверие VBA на выполнение в документе. Для этого существует несколько способов. В целях этого пошагового руководства предоставьте доверие расположению документа в Центре управления безопасностью в Word.
Предоставление доверия расположению документа
- Запустите приложение Word.
- Перейдите на вкладку Файл .
- Нажмите кнопку Параметры Word .
- В области категорий нажмите Центр управления безопасностью.
- В области сведений нажмите Параметры центра управления безопасностью.
- В области категорий нажмите Надежные расположения.
- В области сведений нажмите Добавить новое расположение.
- В диалоговом окне Надежное расположение Microsoft Office перейдите в папку, содержащую проект CallingCodeFromVBA .
- Установите флажок Также доверять всем вложенным папкам.
- В диалоговом окне Надежное расположение Microsoft Office нажмите кнопку ОК.
- В диалоговом окне Центр управления безопасностью нажмите кнопку ОК.
- В диалоговом окне Параметры Word нажмите кнопку ОК.
- Закройте программу Word.
Добавление метода в класс ThisDocument
Теперь, когда проект VBA настроен, добавьте метод в класс ведущего элемента ThisDocument , который можно вызвать из кода VBA.
Добавление метода в класс ThisDocument
- В обозревателе решенийщелкните правой кнопкой мыши ThisDocument.vbи выберите пункт Просмотреть код. В редакторе кода открывается файл ThisDocument.vb .
- Добавьте приведенный ниже метод в класс 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
- В обозревателе решенийдважды щелкните файл ThisDocument.vb. Файл DocumentWithVBA откроется в конструкторе.
- В окне Свойства выберите свойство EnableVbaCallers и установите значение True.
- Появляется сообщение, в котором следует нажать кнопку ОК .
- Выполните сборку проекта.
Вызов метода из кода VBA
Теперь можно вызвать метод CreateTable из кода VBA в документе.
В этом пошаговом руководстве будет добавлен код VBA в документ во время отладки проекта. Код VBA, добавляемый в этот документ, будет перезаписан в следующий раз при построении проекта, так как Visual Studio заменяет документ в выходной папке сборки копией документа из главной папки проекта. Если код VBA необходимо сохранить, его можно скопировать в документ в папке проекта. Дополнительные сведения см. в разделе «Объединение настроек VBA и уровня документа».
Вызов метода из кода VBA
- Нажмите клавишу F5 для запуска проекта.
- На вкладке Разработчик в группе Код щелкните элемент Visual Basic. Открывается редактор Visual Basic.
- В меню Вставить выберите пункт Модуль.
- Добавьте в новый модуль следующий код: Этот код вызывает метод 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#
