Операции с объектами Microsoft Excel
Закрытие объектов Workbook и Application
Объект Microsoft Worksheet закрыть нельзя. Для закрытия объекта Excel Workbook может быть использован метод Close, а для выхода из приложения – метод Quit. Следующие операторы закрывают объект Workbook и затем осуществляют выход из приложения сервера автоматизации, освобождая системные ресурсы:
xlwProd.Close
xlaProd.Quit
Set
xlsProd =
Nothing
Set
xlwProd =
Nothing
Set
xlaProd =
Nothing
Если программно были внесены изменения в рабочем листе, то при закрытии объекта Workbook будет выдан вопрос о необходимости сохранения изменений. Если вы не хотите, чтобы пользователь получил такой вопрос, введите аргумент False для метода Close. Чтобы гарантировать освобождение всех ресурсов, необходимо освободить все использованные объектные переменные.
Замечание
После присвоения переменной, указывающей на объект Application значения Nothing, соответствующее приложение не закрывается, хотя память, занятая переменной, освобождается. Поэтому необходимо закрывать приложение с помощью метода Quit перед освобождением соответствующей объектной переменной.
Создание рабочего листа 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
To
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