Работа с Excel из Гедымина
В Excel есть сотни объектов, и при написании скриптов может понадобиться любой из них. Но для начала необходимо познакомиться с основными и наиболее часто используемыми объектами. К ним относятся:
- Application;
- Workbook;
- Worksheet;
- Range.
Объектная модель Excel по большей части эмулирует его пользовательский интерфейс. Не трудно догадаться, что объект Application является оболочкой всего приложения, а каждый объект Workbook содержит набор объектов Worksheet. Так же понятно, что объект Range является основным абстрактным представлением ячеек, позволяющим работать с отдельными ячейками или группами ячеек.
Рассмотрим подробнее каждый из выше перечисленных объектов.
Содержание |
Application
Объект Application приложения Excel представляет само приложение Excel. Может, это и так очевидно, но Application содержит массу информации о выполняемом экземпляре приложения, параметрах данного экземпляра и текущих пользовательских объектах в этом экземпляре. В объекте Application большое количество членов, часть из которых может вообще не пригодиться, в то время как другая часть будет иметь огромное значение для работы приложения. Эти члены можно сгруппировать следующим образом:
- Свойства, управляющие состоянием и отображением в Excel;
- Свойства, возвращающие объекты;
- Свойства, выполняющие операции;
- Свойства, используемые при операциях с файлами;
- прочие.
Рассмотрим подробнее свойства, возвращающие объекты, так как именно они наиболее часто используются при работе с объектами Excel.
Свойство Тип Описание ActiveCell Range Возвращает ссылку на текущую активную ячейку активного окна(расположенного поверх других). Если активного окна нет, то генерирует ошибку ActiveChart Chart Возвращает ссылку на активную текущую диаграмму. Встроенная диаграмма считается активной, если она выбрана или активирована ActiveSheet Object Возвращает ссылку на активный лист активной рабочей книги ActiveWindow Window Возвращает ссылку на активное окно (расположенное поверх других окон) или Nothing, если активных окон нет Charts Sheets Возвращает набор объектов Sheet (предок объектов Chart и Worksheet), содержащий ссылки на каждую из диаграмм активно рабочей книги Selection Object Возвращает объект, выбранный в приложении. Это может быть Range, Worksheet или любой другой объект. Кроме того это свойство имеется у класса Window – тогда выделение обычно является объектом Range. Если в данный момент не выбран ни один объект, то возвращает Nothing Sheets Sheets Возвращает набор объектов Sheet, содержащий ссылки на каждый из листов активной рабочей книги Workbooks Workbooks Возвращает набор объектов Workbook, содержащий ссылки на каждую открытую рабочую книгу.
Workbooks
Набор Workbooks позволяет работать со всеми открытыми рабочими книгами, создавать рабочую книгу и импортировать данные в новую рабочую книгу. Ниже перечислены основные применения компонента Workbooks.
Создание рабочей книги. Это делается с помощью кода следующего вида:
dim Excel, ExcelSh
set Excel = CreateObject("Excel.Application") 'создание объекта Excel
set ExcelSh = Excel.Workbooks.Add 'создание рабочей книги (используется свойство Workbooks
'объекта Application и метод Add)
Закрытие рабочей книги:
ExcelSh.Close ' закрытие конкретной рабочей книги.
В отличие от большинства наборов этот позволяет закрыть все члены сразу:
Excel.Workbooks.Close
Открытие существующей рабочей книги. Для этого вызывается метод Open набора Workbooks:
dim Excel, TD
set Excel = CreateObject("Excel.Application") ")
set TD = Creator.GetObject(NULL, "TOpenDialog", "")
if TD.Execute then
Excel.Application.Workbooks.Open TD.FileName
else
exit sub
end if
Workbook
Объект Workbook представляет собой одну рабочую книгу. Следует отметить, что многие свойства класса Application есть и в классе Workbook. В таких случаях свойства Workbook относятся к конкретной рабочей книге, а свойства Application -– к активной рабочей книге.
ExcelSh.ActiveSheet.Cells(Start, 2).Value = "Автомобиль: " ' обращение к конкретной ячейке
' (свойство листа Cells) и присвоение ей значения
' (свойство ячейки Value).
Работа со стилями
Как и в документах Word, в Excel можно применять к областям именованные стили. Выбрав команду Format/Styles, можно открыть диалоговое окно Style, позволяющее интерактивно изменять стили. Если в этом диалоговом окне щелкнуть Modify, откроется диалоговое окно Format Cells, в котором показывается какие параметры можно задавать при форматировании ячеек. Каждый из этих параметров доступен и программно.
ExcelSh.ActiveSheet.Cells(1, 2).Font.Size = 8 ExcelSh.ActiveSheet.Cells(1, 2).Font.Name = Veranda ExcelSH.ActiveSheet.Cells(1, 2).Font.Bold = True
Worksheet
Хотя класс Worksheet представляет много членов, большинство его свойств и методов аналогичны членам классов Application и/или Workbook.
ExcelSh.ActiveSheet.Cells(Start, 2).Font.Size = 8
Range
Объект Range применяется в большинстве приложений Excel, чтобы выполнить операцию с какой – либо областью Excel, необходимо сначала представить ее в виде объекта Range и работать уже с ним, обращаясь к методам и свойствам этого объекта.
ExcelSh.ActiveSheet.Range(“A1”). .Value = "товар" ExcelSh.ActiveSheet.Range(“A1:B12”).Font.Bold = True ExcelSh.ActiveSheet.Rows(Start).Font.Size = 8 //обращение к строке с номером Start (Start = 1, 2,...)
Использование встроенного языка Excel
Если приходится работать с более ранней версией Excel, в которой нет справки по объектам VBScript, то можно воспользоваться следующим способом получения информации по работе со свойствами и методами этих объектов:
- Пункт главного меню Сервис \ команда Макрос \ Начать запись
- Произвести все необходимые действия с ячейками (например, вставка границы, изменение цвета ячейки, назначение шрифта и т. д.)
- После всех необходимых действий зайти в Сервис \ Макрос \ Остановить запись
- Для того, чтобы посмотреть каким образом Excel произвел операции над ячейками, сделать следующее: Сервис \ Макрос \ Макросы. Из появившегося списка с именами макросов выбрать необходимый и нажать на кнопку «Изменить».
- Появится программный модуль макроса на Visual Basic примерно следующего содержания (рассмотрим изменение границ ячейки):
Sub Макрос1()
Range("G8").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range("G8").Select
End Sub
Для того, чтобы узнать, значения переменных Excel, таких как xlEdgeTop, xlEdgeBottom, xlEdgeRight. xlEdgeLeft (так как Гедымин «не поймет» их напрямую), можно выполнить следующий скрипт:
Sub Macros1() MsgBox xlEdgeRight ' вывод на экран значения переменной Excel, которое теперь можно использовать в Гедымине End Sub
Таким образом, скрипт в Гедымине будет следующим:
ExcelSh.ActiveSheet.Cells(Start, 12).Borders(8).LineStyle = 1 ' верхняя граница ячейки ExcelSh.ActiveSheet.Cells(Start, 12).Borders(9).LineStyle = 1 ' нижняя граница ячейки ExcelSh.ActiveSheet.Cells(Start, 12).Borders(10).LineStyle = 1 ' правая граница ячейки ExcelSh.ActiveSheet.Cells(Start, 12).Borders(7).LineStyle = 1 ' левая граница ячейки