Создание рабочего листа Excel с помощью кода автоматизации


Те же действия, что происходят при нажатии кнопки Анализ в MS Excel, можно осуществить при помощи кода автоматизации VBA. Преимуществом такого способа является возможность форматировать созданный объект специально под нужды конкретного приложения. Рассмотрим функцию CreateCustomSheet (), создающую новый объект Worksheet и заполняющую его данными из таблицы "Товары" базы данных Microsoft Access:
Function CreateCustomSheet() As Integer
‘Создание рабочего листа MS Excel из таблицы "Товары"
‘Описание локальных переменных
‘(Объектные переменные описаны на уровне модуля)
Dim сйэБорей As Database ‘Текущая база данных
Dim rstProd As Recordset ‘Объект Recordset
Dim intRow As Integer ‘Счетчик строк
Dim intCol As Integer ‘Счетчик столбцов
‘Открытие таблицы в текущей базе данных
Set dbБорей = CurrentDb()
Set rstProd = dbBopeu.OpenRecordset("Товары", dbdpenTable)
DoCmd.Hourglass True ‘Создание нового объекта Excel Workbook
Set xlwProd = CreateObject("Excel.Sheet") »Создание объекта
Application для применения метода Quit
Set xlaProd = xlwProd.Parent
intRow = 1
intCol = 1
rstProd.MoveFirst ‘Переход к первой записи
Do Until rstProd.EOF
‘Цикл с шагом в одну запись
For intCol = 1 То rstProd.Count
‘Цикл с шагом в одно поле
If (Not IsNull(rstProd(intCol -1))) Then
xlwProd.ActiveSheet.Cells(intRow, intCol).Value =
CStr(rstProd(intCol -I}}
End If
Next intCol
rs t Prod.MoveNext intRow = intRow + 1 Loop
For intCol = 1 To xlwProd.ActiveSheet.Columns.Count
‘Форматирование каждого столбца рабочего листа
xlwProd.ActiveSheet.Columns(intCol).Font.Size = 8
xlsCust.ActiveSheet.Columns(intCol).AutoFit If intCol = 8 Then
‘Выравнивание по левому краю числовых и
‘смешанных почтовых кодов
xlwProd.ActiveSheet.Columns(intCol).HorizontalAlignment = _
xlLeft
End If
Next
intCol DoCmd.Hourglass False
xlwProd.SaveAs (CurDir & "\Товары_2.xls")
xlaProd.Quit End Function
Тип данных, возвращаемых выражением rstProd(intCol-l), следует специально изменить с variant на string при помощи функции cstr(), иначе Microsoft Excel вместо нужной величины отобразит в соответствующем столбце #н/д (#N/A#). Если объект Recordset содержит поля, типы которых отличны от Text, то для определения типа данных в столбце используйте соответствующую функцию СТуре().
Константа xlLeft, присвоенная в качестве значения свойству HorizontalAlignment восьмого столбца, представляет собой встроенную константу Excel, определяемую в тот момент, когда устанавливается ссылка на объектную библиотеку Microsoft Excel 10.0 Object Library. Выделение элемента Constants (Константы) в списке Модули/ Классы окна просмотра объектов при подключенной библиотеке Excel отображает константы xlConst. На приведено числовое значение константы xlLeft, которая является одной из констант для задания значения свойства HorizontalAlignment.
Ввод оператора ? CreateCustomSheet () в окне отладки запускает функцию, которую мы рассматривали выше. На приведена рабочая книга "ToBapы_2.xls" с рабочим листом, созданным при помощи функции CreateCustomSheet () и открытым в Microsoft Excel.
 
Обмен данными с Microsoft Word в системе автоматизации
В настоящем разделе будут рассмотрены несколько примеров управления объектами Microsoft Word из процедур VBA: открытие и печать документа, слияние документов для почтовых рассылок и заполнение полей в документе Word данными из БД Microsoft Access.
Иерархия объектов VBA приложения Microsoft Word
Так же как и при использовании объектной модели Microsoft Excel, познакомимся сначала с некоторыми объектами объектной модели Microsoft Word.

  • Объект Application — ссылается на активное приложение Microsoft Word. Через этот объект можно получить доступ ко всем остальным объектам модели. Объект Application имеет свойства ActiveDocument и ActiveWindow, которые представляют собой активный документ и активное окно соответственно. Можно указать Word.Application в качестве значения аргумента <класс> функций CreateObject() и GetObject() И В операторе Dim <объектнаяПеременная> As New <класс>.
  • Объект Document — является глобальным объектом и, так же как и объект Application, может использоваться в коде автоматизации в качестве значения аргумента <класс> функций CreateObject() и GetObject() и в операторе Dim <объектнаяПеременная> As New <класс>. Семейство Documents представляет собой набор всех документов, открытых в Word.
  • Объект Selection — представляет собой выделенную область в окне документа Word или точку вставки. Каждый документ может иметь только одну область выделения, и только одна область выделения открытых документов может быть активна в некоторый момент времени. Это означает, что всегда существует только один объект Selection. Объект Selection подчинен объекту Application, a создается при применении метода Select к объекту Document.
  • Семейство windows объекта Application представляет собой набор всех окон приложения Word.
  • Семейство Bookmarks подчинено объекту Document, и каждый объект этого семейства представляет собой закладку в документе.
  • Объект Range представляет собой непрерывную область текста в документе Word. Диапазоны, как и закладки, используются для идентификации текста в документе, однако, в отличие от закладок, диапазоны существуют только во время выполнения процедур VBA. Диапазоны не зависят от области выделения в документе. Можно работать с диапазоном, не затрагивая области выделения. Диапазонов в документе может быть несколько.