Управление приложением Word из Excel
Рассмотрим на конкретном примере реализацию управления приложением MS Word из MS Excel с использованием технологии автоматизации. Приложение в MS Excel в данном случае выступает клиентом, a MS Word — сервером автоматизации. Таким образом, из приложения на MS Excel после процедуры связывания можно работать с объектами приложения MS Word. При этом будет использоваться позднее связывание. Алгоритм… Читать ещё >
Управление приложением Word из Excel (реферат, курсовая, диплом, контрольная)
Рассмотрим на конкретном примере реализацию управления приложением MS Word из MS Excel с использованием технологии автоматизации. Приложение в MS Excel в данном случае выступает клиентом, a MS Word — сервером автоматизации. Таким образом, из приложения на MS Excel после процедуры связывания можно работать с объектами приложения MS Word. При этом будет использоваться позднее связывание.
Хотя это и не входит в задачи настоящего учебного пособия, приведем краткий обзор тех объектов MS Word, которые понадобятся для реализации примера. В MS Word объектная модель, так же как и в MS Excel, имеет иерархическую структуру и состоит из таких основных объектов, как: приложение Application, коллекция документов Documents, коллекция абзацев документа Paragraphs, коллекция предложений Sentences, коллекция слов Words, коллекция символов Characters, выделенный участок документа Selection.
Из набора методов и свойств объектов модели MS Word выделим следующие:
• объект Application:
Quit — выход из приложения,.
- — StatusBar — вывод информации в строку состояния;
- • объект Document:
- — SaveAs — сохранение документа,
- — Add — создание нового документа;
- • объект Selection:
- — TypeParagraph осуществляет перевод строки,
- — TypeText выводит текст в документ.
Более полное описание объектной модели MS Word можно найди в его справочном руководстве или в работе[1].
Пример 9.3.
Смысл примера состоит в автоматизации процесса создания набора писем для рассылки клиентам налоговой службы. Процедуру, реализующую данную задачу, необходимо создать в MS Excel, а генерируемые письма — в виде отдельных документов MS Word.
Таблица с исходной информацией клиентов для создания писем показана на рис. 9.10. Диапазоны Messl, Mess2 и author (соответственно ячейки G8, G9 и G11) содержат текст, который используется для создания писем.
Алгоритм созданной процедуры Make Letter, листинг которой приведен на рис. 9.11, следующий. Работа процедуры начинается с создания объекта oWord и запуска сервера MS Word. После этого просматриваются строки данных с клиентами на листе с именем Лист1. Затем для каждого клиента с использованием свойств и методов объектов MS Word создаются и сохраняются в отдельном файле письма.
Для реализации процедуры пришлось воспользоваться макрорекордером Word, который понадобился для автоматизации создания кода процедуры и ознакомления с объектной моделью MS Word. Приемы работы с макрорекордерами Word и Excel похожи.
Схему создания процедуры MakeLetter можно описать следующим образом. Вначале была осуществлена запись макроса в MS Word. При этом записывались создание нового документа, добавление и форматирование текста, а также сохранение файла. Это позволило получить необходимую информацию о свойствах и методах объектов MS Word. Затем макрос был скопирован в модуль кода Excel и модифицирован. Прежде всего, были добавлены конструкции обработки объектов MS Excel. Кроме того, несколько сформированных макрорскордером встроенных констант MS Word пришлось заменить на их фактические значения. Это было обусловлено использованием в примере поздней привязки.
Последовательность выполнения примера 93.
- 1. Активизируйте приложение MS Excel, создайте (сохраните) новую книгу под и менем Letter_ Word.
- 2. Подготовьте на рабочем листе с именем Лист 1 исходные данные, как показано на рис. 9.8.[2][3][4]
Рис. 9.8. Таблица с исходными данными клиентов.
Информация для рассылки на листе книги
Set oRange = Sheets («Лист1») .Range («A1») 'начало области
messl = Sheets («Лист1»). Range («Messl») 'первая часть письма mess2 = Sheets («Лист1»). Range («Mess2 «) 'вторая часть письма author = Sheets («Лист1») .Range («author») 'автор
Цикл обработки записей на Лист 1
CItems = Application. CountA (Sheets («Лист1»).Range («A:A»)) For i = 3 To CItems Изменение строки статуса
Application.StatusBar = «Формирование письма «& i — 2.
Заполнение переменных данными Namel = oRange. Cells (i, 2) .Value 'фамилия
Name2 = oRange. Cells (i, 3).Value 'имя
Name3 = oRange. Cells (i, 4).Value 'отчество SYear = oRange. Cells (i, 6) .Value 'год
SAmt =Format (oRange.Cells (i, 5) .Value, «#,##0.00») 'сумма
Имя файла
FName = ThisWorkbook. Path & «» & Namel & «.doc» .
Формирование документа Word With oWord.
.Documents. Add 'добавление документа With. Selection .Font.Size = 12.
. ParagraphFormat. Alignment = 0 'выравнивание no левому краю
.Font.Bold = False.
.TypeText Text := «Дата:» & vbTab &.
Format (Date, «d mmmm yyyy») 'текущая дата .TypeParagraph.
.TypeText Text := «Кому:» & vbTab & Namel & vbTab & Name2 & vbTab & Name3.TypeParagraph.
.TypeText Text := «От кого: инспектор «& vbTab & author. TypeParagraph .TypeParagraph .Font.Size = 14 .Font.Bold = True.
. ParagraphFormat. Alignment = 1 'выравнивание no центру
.TypeText Text := «Уважаемый (ая) «& vbTab & Name2 & «» & vbTab & Name3. TypeParagraph .TypeParagraph .Font.Size = 12.
. ParagraphFormat. Alignment = 3 'выравнивание no ширине
.Font.Bold = False.
messR = vbTab & messl & «» & SAmt & «рублей за «.
& vbTab & SYear & vbTab & «год.» .
.TypeText messR.TypeParagraph.
.TypeText Text := vbTab & mess2.TypeParagraph.
.TypeParagraph.
.TypeText Text:=vbTab & «Инспектор» .
End With.
. ActiveDocument. SaveAs FileName: = FName 'сохранение документа End With Next i.
'закрытие и уничтожение объекта oWord. Quit Set oWord = Nothing.
' Сброс строки состояния
Application.StatusBar = «» .
MsgBox CItems — 2 & «писем сформировано и сохранено в «.
& ThisWorkbook. Path End Sub.
- 6. Для проверки синтаксических ошибок откомпилируйте процедуру.
- 7. Добавьте на лист в ячейку G2 кнопку (см. рис. 9.8). Для этого откройте вкладку Разработчик, нажмите кнопку Вставить и выберите в панели Элементы ActiveX элемент Кнопка.
- 8. Отобразите окно свойств этого объекта с помощью кнопки (5* (Свойства) вкладки Разработчик. Установите размеры объекта и его название «Создание писем рассылки» (свойство Caption).
- 9. В режиме конструктора два раза щелкните по кнопке «Создание писем рассылки». В открывшемся окне редактора кода в шаблоне обработчика события кнопки вставьте строку с вызовом процедуры MakeLetter, как показано в следующем коде:
Private Sub CommandButtonl_Click ().
MakeLetter End Sub.
Заметим, что данный обработчик будет размещен в модуле листа. Выйдите из режима конструктора.
10. Нажмите на кнопку «Создание писем рассылки». В результате в папке, где находится исходный файл Letter_Vord.xlsm, будут сформированы файлы с письмами в формате MS Word. На рис. 9.9 показан один из таких документов, который создан с помощью процедуры MakeLetter.
Рис. 9.9. Результат выполнения процедуры MakeLetter.
- [1] Заика A. A. VBA в MS Office 2007. URL: http://4VTv.intuit.ru/studies/courses/494/350/info.
- [2] Войдите в редактор VBA (Alt + FI 1).
- [3] Правой кнопкой мыши выделите VBAProject (Letter_Word) и выберите командуInsert —> Module из строки меню или контекстного меню.
- [4] Дважды щелкните по объекту Module 1 и в окне редактора введите приведенный в листинге 9.3 исходный текст. Листинг 9.3 Sub MakeLetter () ' Создание писем рассылки в word, используя автоматизацию (позднее связывание) Dim oWord As ObjectDim oRange As Range Dim messl As String, mess2 As String, messR As StringDim CItems As Integer, i As Integer Dim author As String Dim Namel As String, Name2 As String, Name3 As StringDim SYear As String, SAmt As String Dim FName As String ' Создание и запуск объекта Word Set oWord = CreateObject («Word.Application»)