Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Visual Studio предлагает функции в Visual Basic, которые улучшают программирование в Microsoft Office. Список функций Visual Basic включает автоматически реализуемые свойства, инструкции в лямбда-выражениях и инициализаторы коллекций. Вы можете внедрить сведения о типах, что позволяет развертывать сборки, взаимодействующие с com-компонентами, без развертывания основных сборок взаимодействия (PIA) на компьютере пользователя. Дополнительные сведения см. в разделе Пошаговое руководство: внедрению типов из управляемых сборок.
В данном пошаговом руководстве эти возможности показаны в контексте программирования для Microsoft Office, но многие из них могут оказаться полезными и в других ситуациях. В этом пошаговом руководстве вы создадите книгу Excel с помощью надстройки Excel, а затем документ Word со ссылкой на эту книгу. Наконец, вы узнаете, как включать и отключать зависимость PIA.
Предварительные требования
Для выполнения данного пошагового руководства на компьютере должны быть установлены Microsoft Office Excel и Microsoft Office Word.
Примечание
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Настройка приложения надстройки Excel
Запустите Visual Studio.
В меню Файл выберите пункт Создать, а затем команду Проект.
В области Установленные шаблоны разверните узел Visual Basic, узел Office, а затем выберите год версии продукта Office.
В области Шаблоны щелкните Надстройка версии> Excel<.
Убедитесь, что в верхней части области Шаблоны в поле Требуемая версия .NET Framework отображается .NET Framework 4 или более поздняя версия.
Если нужно, в поле Имя введите имя проекта.
Нажмите кнопку ОК.
В обозревателе решений появится новый проект.
Добавление ссылок
В обозревателе решений щелкните имя проекта правой кнопкой мыши и выберите пункт Добавить ссылку. Откроется диалоговое окно Добавление ссылки.
На вкладке Сборки в списке Имя компонента выберите Microsoft.Office.Interop.Excel, версия
<version>.0.0.0
(расшифровку номеров версий продуктов Office см. в разделе Версии Майкрософт), а затем, удерживая нажатой клавишу CTRL, выберите Microsoft.Office.Interop.Word,version <version>.0.0.0
. Если сборки отсутствуют, может потребоваться проверить, что они установлены и отображаются (см. раздел Практическое руководство. Установка основных сборок взаимодействия Microsoft Office).Нажмите кнопку ОК.
Добавление необходимых инструкций Imports или директив using
В обозревателе решений щелкните правой кнопкой мыши файл ThisAddIn.vb или ThisAddIn.cs и выберите в контекстном меню команду Просмотреть код.
Добавьте следующие
Imports
операторы в начало файла кода, если их еще нет.Imports Microsoft.Office.Interop
Создание списка банковских счетов
В обозревателе решений щелкните правой кнопкой мыши имя проекта, выберите в контекстном меню команду Добавить, а затем щелкните пункт Класс. Назовите класс Account.vb. Нажмите кнопку Добавить.
Замените определение класса
Account
следующим кодом. В определениях классов используются автоматически реализуемые свойства. Дополнительные сведения см. в разделе Автоматически реализуемые свойства.Public Class Account Property ID As Integer = -1 Property Balance As Double End Class
Чтобы создать
bankAccounts
список, содержащий две учетные записи, добавьте следующий кодThisAddIn_Startup
в метод ThisAddIn.vb. В объявлениях списков используются инициализаторы коллекций. Дополнительные сведения см. в разделе Инициализаторы коллекций.Dim bankAccounts As New List(Of Account) From { New Account With { .ID = 345, .Balance = 541.27 }, New Account With { .ID = 123, .Balance = -127.44 } }
Экспорт данных в Excel
В том же самом файле добавьте в класс
ThisAddIn
следующий метод. Этот метод служит для настройки книги Excel и экспорта данных в нее.Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account), ByVal DisplayAction As Action(Of Account, Excel.Range)) With Me.Application ' Add a new Excel workbook. .Workbooks.Add() .Visible = True .Range("A1").Value = "ID" .Range("B1").Value = "Balance" .Range("A2").Select() For Each ac In accounts DisplayAction(ac, .ActiveCell) .ActiveCell.Offset(1, 0).Select() Next ' Copy the results to the Clipboard. .Range("A1:B3").Copy() End With End Sub
У метода Add есть необязательный параметр для указания конкретного шаблона. Необязательные параметры позволяют опустить аргумент для этого параметра, если вы хотите использовать значение параметра по умолчанию. Поскольку в предыдущем примере никакой аргумент не передается, в методе
Add
используется шаблон по умолчанию и создается новая книга.Свойства
Range
иOffset
объекта Range используют возможность индексированных свойств. Кроме того, индексированные свойства позволяют использовать свойствоValue
объектаRange
, устраняя необходимость в использовании свойстваValue2
. СвойствоValue
является индексированным, но индекс — необязательным. Совместная работа необязательных аргументов и индексированных свойств показана в следующем примере.
Добавьте в конец метода
DisplayInExcel
следующий код, чтобы ширина столбца изменялась в соответствии с содержимым.' Add the following two lines at the end of the With statement. .Columns(1).AutoFit() .Columns(2).AutoFit()
Дополнительные сведения о внедрении типов взаимодействия см. в процедурах "Поиск справочника по PIA" и "Восстановление зависимости PIA" далее в этой статье.
Вызов DisplayInExcel
Добавьте следующий код в конец метода
ThisAddIn_StartUp
. Вызов методаDisplayInExcel
содержит два аргумента. Первый аргумент представляет собой имя списка счетов, которые требуется обработать. Второй аргумент — это состоящее из нескольких строк лямбда-выражение, которое определяет, каким образом следует обрабатывать данные. ЗначенияID
иbalance
для каждого из счетов отображаются в соседних ячейках, а если баланс имеет отрицательное значение, строка отображается красным.DisplayInExcel(bankAccounts, Sub(account, cell) ' This multiline lambda expression sets custom ' processing rules for the bankAccounts. cell.Value = account.ID cell.Offset(0, 1).Value = account.Balance If account.Balance < 0 Then cell.Interior.Color = RGB(255, 0, 0) cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) End If End Sub)
Чтобы запустить программу, нажмите клавишу F5. Появится книга Excel, содержащая данные о счетах.
Добавление документа Word
Добавьте в конец метода
ThisAddIn_StartUp
следующий код, чтобы создать документ Word, содержащий ссылку на книгу Excel.Dim wordApp As New Word.Application wordApp.Visible = True wordApp.Documents.Add() wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
Метод PasteSpecial имеет семь параметров, которые определены как необязательные ссылочные параметры. Именованные и необязательные аргументы позволяют определять параметры, к которым требуется обращаться по имени, и передавать аргументы только для этих параметров. В этом примере аргументы передаются, чтобы показать, что необходимо создать ссылку на книгу в буфере (параметр
Link
) и что эта ссылка должна отображаться в документе Word в виде значка (параметрDisplayAsIcon
).
Выполнение приложения
- Нажмите клавишу F5 для запуска приложения. Будет запущено приложение Excel, в котором будет открыта таблица, содержащая сведения о двух счетах из списка
bankAccounts
. Затем будет открыт документ Word, содержащий ссылку на таблицу Excel.
Очистка завершенного проекта
- В Visual Studio в меню Построение выберите пункт Очистить решение. В противном случае надстройка будет запускаться при каждом открытии Excel на компьютере разработчика.
Поиск справочника по PIA
Запустите приложение снова, но не выбирайте пункт Очистить решение.
Выберите кнопку Пуск. Найдите версию> Microsoft Visual Studio < и откройте командную строку разработчика.
В окне командной строки разработчика для Visual Studio введите команду
ildasm
, а затем нажмите клавишу ВВОД. Появится окно программы IL DASM.В меню Файл в окне IL DASM выберите пункт Файл>Открыть. Дважды щелкните Версию> Visual Studio<, а затем дважды щелкните Проекты. Откройте папку проекта и найдите в папке bin/Debug файл имя_проекта.dll. Дважды щелкните файл имя_проекта.dll. В новом окне будут показаны атрибуты проекта, а также ссылки на другие модули и сборки. Обратите внимание, что в сборку включены пространства имен
Microsoft.Office.Interop.Excel
иMicrosoft.Office.Interop.Word
. По умолчанию в Visual Studio компилятор импортирует в сборку необходимые типы из сборки PIA, на которую указывает ссылка.Дополнительные сведения см. в разделе Практическое руководство. просмотреть одержимое сборки.
Дважды щелкните значок МАНИФЕСТ. Откроется окно со списком сборок, содержащих элементы, на которые имеются ссылки в проекте. Сборки
Microsoft.Office.Interop.Excel
иMicrosoft.Office.Interop.Word
не будут указаны в этом списке. Поскольку необходимые для проекта типы были импортированы в сборку проекта, ссылки на сборки PIA не требуется. Это упрощает развертывание. Сборки PIA не обязательно должны присутствовать на компьютере пользователя, а поскольку приложение не требует развертывания конкретной версии сборки PIA, можно разрабатывать приложения, которые работают с различными версиями Office, если в этих версиях имеются все необходимые интерфейсы API.Поскольку развертывать сборки PIA больше не требуется, можно создавать приложения для применения в сложных сценариях, чтобы эти приложения работали с несколькими версиями Office, включая и более ранние версии. Тем не менее это возможно только в том случае, если в коде не используются интерфейсы API, которые недоступны в используемой версии Office. Разработчик не всегда знает, был ли доступен тот или иной интерфейс API в более ранней версии, поэтому работать с более ранними версиями Office не рекомендуется.
Примечание
До Office 2003 сборки PIA не публиковались. Поэтому единственными способом создания сборки взаимодействия в Office 2002 или более ранних версиях является импорт ссылки COM.
Закройте окно манифеста и окно сборки.
Восстановление зависимости PIA
- В обозревателе решений нажмите кнопку Показать все файлы. Разверните папку Ссылки и выберите Microsoft.Office.Interop.Excel. Нажмите клавишу F4, чтобы открыть окно Свойства.
- В окне Свойства измените значение свойства Внедрить типы взаимодействия с True на False.
- Повторите шаги 1 и 2 этой процедуры для сборки
Microsoft.Office.Interop.Word
. - Нажмите клавишу F5, чтобы проверить, что проект по-прежнему выполняется правильно.
- Повторите шаги 1–3 из предыдущей процедуры, чтобы открыть окно сборки. Обратите внимание, что сборки
Microsoft.Office.Interop.Word
иMicrosoft.Office.Interop.Excel
больше не входят в список внедренных сборок. - Дважды щелкните значок МАНИФЕСТ и просмотрите список сборок, на которые имеются ссылки. В списке будут указаны сборки
Microsoft.Office.Interop.Word
иMicrosoft.Office.Interop.Excel
. Поскольку приложение содержит ссылки на сборки PIA Excel и Word, а свойство Внедрить типы взаимодействия имеет значение False, на компьютере пользователя должны храниться обе сборки. - В Visual Studio в меню Построение выберите пункт Очистить решение, чтобы очистить завершенный проект.
См. также
- Автоматически реализуемые свойства (Visual Basic)
- Инициализаторы коллекций
- Необязательные параметры
- Передача аргументов по позиции и по имени
- Раннее и позднее связывание
- Лямбда-выражения
- Пошаговое руководство: внедрение типов из управляемых сборок
- Пошаговое руководство: создание первой надстройки VSTO для Excel
- COM-взаимодействие