Написание кода в решениях Office

В проектах Office есть некоторые аспекты написания кода, отличные от других типов проектов в Visual Studio. Многие из этих различий связаны с тем, как объектные модели Office раскрываются для использования в управляемом коде. Другие различия связаны с проектированием проектов Office.

Применимо к: Сведения в этом разделе относятся к проектам на уровне документа и проектам надстроек VSTO. См. сведения о функциях, доступных по типу приложения и проекта Office.

Управляемый код и программирование Office

Ключевая технология, которая делает создание интегрированного решения Microsoft Office возможным, является автоматизация, которая является частью технологии COM. Автоматизация позволяет использовать код для создания и управления объектами программного обеспечения, предоставляемыми любым приложением, библиотекой DLL или элементом ActiveX, поддерживающим соответствующие программные интерфейсы.

Общие сведения о основных сборках взаимодействия

Приложения Microsoft Office делают доступными большую часть своих функций для автоматизации. Однако для автоматизации приложений Office нельзя использовать управляемый код (например, Visual Basic или C#). Чтобы автоматизировать приложения Office с помощью управляемого кода, необходимо использовать основные сборки взаимодействия Office (PIA). Основные interop сборки позволяют управляемому коду взаимодействовать с объектной моделью приложений Office на основе COM.

У каждого приложения Microsoft Office есть PIA. При создании проекта Office в Visual Studio в проект автоматически добавляется ссылка на соответствующую PIA. Чтобы автоматизировать функции других приложений Office из проекта, необходимо добавить ссылку на соответствующую PIA вручную. Для получения дополнительной информации см. руководство: Как нацеливать приложения Office через основные сборки взаимодействия.

Использование основных сборок взаимодействия во время разработки и выполнения

Для выполнения большинства задач разработки необходимо установить и зарегистрировать личные данные Office в глобальном кэше сборок на компьютере разработки. Дополнительные сведения см. в статье "Настройка компьютера для разработки решений Office".

PIA Office не требуются на компьютерах конечных пользователей для запуска решений Office, предназначенных для .NET Framework 4 или более новой версии. Дополнительные сведения см. в статье "Проектирование и создание решений Office".

Использование типов в основных сборках взаимодействия

Основные взаимодействующие библиотеки Office содержат сочетание типов, которые обеспечивают доступ к объектной модели приложений Office, и дополнительные инфраструктурные типы, которые не предназначены для использования непосредственно в вашем коде. Общие сведения о типах в PIA Office см. в разделе "Общие сведения о классах и интерфейсах в основных сборках взаимодействия Office".

Так как типы в пиА Office соответствуют типам в объектных моделях на основе COM, то использование этих типов часто отличается от других управляемых типов. Например, способ вызова методов, имеющих необязательные параметры в основной сборке взаимодействия Office, зависит от языка программирования, используемого в проекте. Дополнительные сведения см. в следующих разделах:

Модель программ проектов Office

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

Общие сведения о созданных классах

В проектах уровня документа для Excel и Word созданный класс напоминает объект верхнего уровня в объектной модели приложения. Например, созданный ThisDocument класс в проекте документа Word представляет те же члены, что и класс Document в объектной модели Word. Дополнительные сведения о созданных классах в проектах на уровне документов см. в разделе "Настройка уровня документа программы".

Проекты надстроек VSTO предоставляют созданный класс ThisAddIn. Этот класс не похож на класс в объектной модели ведущего приложения. Вместо этого этот класс представляет саму надстройку VSTO и предоставляет элементы, которые можно использовать для доступа к объектной модели ведущего приложения и доступа к другим функциям, доступным для надстроек VSTO. Дополнительные сведения см. в разделе "Надстройки VSTO программы".

Все созданные классы в проектах Office включают Startup и Shutdown обработчики событий. Чтобы приступить к написанию кода, обычно добавляется код в эти обработчики событий. Чтобы инициализировать надстройку VSTO, можно добавить код в обработчик события Startup. Чтобы очистить ресурсы, используемые надстройкой VSTO, можно добавить код в Shutdown обработчик событий. Дополнительные сведения см. в разделе "События" в проектах Office.

Доступ к созданным классам во время выполнения

Когда решение Office загружается, среда выполнения Visual Studio для Office создает экземпляры каждого из созданных классов в проекте. Эти объекты можно получить из любого кода в проекте с помощью Globals класса. Например, вы можете использовать класс Globals, чтобы вызывать код в классе ThisAddIn из обработчика событий кнопки интерфейса Ribbon в надстройке VSTO.

Дополнительные сведения см. в статье "Глобальный доступ к объектам в проектах Office".

Аспекты пространства имен в решениях Office

Невозможно изменить пространство имен по умолчанию (или корневое пространство имен в Visual Basic) проекта Office после создания проекта. Пространство имен по умолчанию всегда совпадает с именем проекта, указанным при создании проекта. При переименовании проекта пространство имен по умолчанию не изменяется. Дополнительные сведения о пространстве имен по умолчанию в проектах см. на странице приложения, конструкторе проектов (C#) и странице приложений, конструкторе проектов (Visual Basic).

Изменение пространства имен классов элементов узла в проектах C#

Классы хост-элементов (например, классы ThisAddIn, ThisWorkbook или ThisDocument) имеют собственные пространства имен в проектах Visual C# Office. По умолчанию пространство имен для элементов узла в проекте совпадает с именем проекта, указанным при создании проекта.

Чтобы изменить пространство имен хост-элементов в проекте Visual C# Office, используйте пространство имен для Host Item. Дополнительные сведения см. в разделе "Свойства" в проектах Office.

Поддерживаемые языки программирования в проектах Office

Шаблоны проектов Office в Visual Studio поддерживают только языки программирования Visual Basic и Visual C#. Поэтому эти шаблоны проектов доступны только в узлах Visual Basic и Visual C# диалогового окна "Новый проект " в Visual Studio. Дополнительные сведения см. в статье "Практическое руководство. Создание проектов Office в Visual Studio".

Выбор языка и программирование Office

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

Программирование на Visual Basic или Visual C# для решений Office

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

Основные различия между Visual Basic и Visual C#

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

Функция Description Поддержка Visual Basic Поддержка Visual C#
Необязательные параметры Многие методы Microsoft Office имеют параметры, которые не требуются при вызове метода. Если значение для параметра не передается, используется значение по умолчанию. Visual Basic поддерживает необязательные параметры. Visual C# поддерживает необязательные параметры в большинстве случаев. Дополнительные сведения см. в разделе "Необязательные параметры" в решениях Office.
Передача параметров по ссылке Необязательные параметры в большинстве основных сборок взаимодействия Microsoft Office можно передавать по значению. Однако в некоторых первичных сборках взаимодействия необязательные параметры, принимающие ссылочные типы, должны передаваться по ссылке.

Дополнительные сведения о параметрах значений и ссылочных типов см. в разделах "Передача аргументов по значению и по ссылке (Visual Basic)" и "Передача параметров" (руководство по программированию на C#).
Дополнительная работа не требуется для передачи параметров по ссылке. Компилятор Visual Basic автоматически передает параметры по ссылке при необходимости. В большинстве случаев компилятор Visual C# автоматически передает параметры по ссылке при необходимости. Дополнительные сведения см. в разделе "Необязательные параметры" в решениях Office.
Параметризованные свойства Некоторые свойства принимают параметры и действуют как функции только для чтения. Visual Basic поддерживает свойства, принимаюющие параметры. Visual C# поддерживает свойства, принимаюющие параметры.
Поздняя привязка Поздняя привязка включает определение свойств объектов во время выполнения вместо приведения переменных к типу объекта во время разработки. Visual Basic выполняет позднюю привязку, если параметр Strict отключен. Если параметр Strict включен, необходимо явным образом преобразовать объекты и использовать типы в System.Reflection пространстве имен для доступа к элементам с поздней привязкой. Дополнительные сведения см. в статье "Поздняя привязка" в решениях Office. Visual C# выполняет позднюю привязку в проектах, предназначенных для .NET Framework 4. Дополнительные сведения см. в статье "Поздняя привязка" в решениях Office.

Основные различия между разработкой Office и управляемым кодом

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

Функция Description Поддержка Visual Basic и Visual C#
Индексы массива Нижняя граница массива коллекций в приложениях Microsoft Office начинается с 1. Visual Basic и Visual C# используют массивы с нулевой нумерацией. Дополнительные сведения см. в разделе "Массивы" (руководство по программированию на C#) и массивы в Visual Basic. Чтобы получить доступ к первому элементу коллекции в объектной модели приложения Microsoft Office, используйте индекс 1 вместо 0.