Запуск MS Excel средствами VFP
Первым шагом при работе с внешним приложением является подключение его объекта к технологии IntelliSense системы VFP. Для подключения объекта MS Excel необходимо в диалоговом окне управления типами объектов (см. рис. 3) найти строку Microsoft Excel 9.0 Object Libraryи подключить ее к стандартным типам.
Следует помнить о том, что при запуске стороннего приложения, с точки зрения VFP, оно представляет собой объект и для дальнейшей работы необходимо присвоить ссылку на этот объект произвольной переменной. Соблюдая венгерскую нотацию в именовании переменных, рекомендуется начинать их имена с символа «о», например, для объекта Excel целесообразно использовать имя переменной oExcel.
Синтаксис команды, создающей объект произвольного класса в системе VFP следующий:
CREATEOBJECT(cClassName [, eParameter1, eParameter2, ...])
где, параметр cClassName является текстовым именем класса, описывающего создаваемый объект. После указания имени класса, через запятую допускается указывать произвольное количество параметров, с какими будет создан объект.
Таким образом, команда создания объекта типа приложения MS Excel в синтаксисе VFP будет выглядеть следующим образом:
oExcel=CREATEOBJECT('Excel.Application')
Дальнейшую работу с приложением следует осуществлять посредством явного указания имени переменной, ссылающейся на объект приложения, например, команда oExcel.Quit закроет Excel. Не забывайте, что созданный объект является «голым» приложением. В нем нет ни рабочих книг, ни, тем более, рабочих листов. Их придется создавать или открывать методами созданного объекта.
Рабочая книга Excel является подобъектом самого объекта Excel.Application. Для возможности дальнейшей работы объект типа «Рабочая книга» должен быть присвоен некоторой переменной, например:
oMyBook=oExcel.Workbooks.Add()
данная команда создает новую рабочую книгу и присваивает ее переменной oMyBook. Если необходимо открыть уже существующую книгу, следует использовать команду Open, а не Add.
oMyBook=oExcel.Workbooks.Open('C:\MyTestBook.xls')
Примечание: обратите внимание, что при написании команд, после символа разделителя система автоматически раскрывает список всех доступных свойств и методов (рис. 4)
Рис. 4 Ниспадающий список доступных команд
Если создается новая рабочая книга, то ее параметры такие же, как и у книги, созданной непосредственно в Excel. В большинстве случаев эта книга пуста и содержит в себе три чистых рабочих листа, причем активным является первый лист.
Для возможности непосредственной работы с данными, следует создать переменную, со ссылкой на объект типа рабочего листа (ячейки в Excel являются подобъектами именно рабочего листа, а не книги). Это можно сделать следующей командой:
oMySheet=oMyBook.Worksheets(1)
число в скобках указывает на индекс рабочего листа в книге. Т.к. нумерация листов начинается с 1, то указанная команда присваивает переменной oMySheet ссылку на первый рабочий лист.
Для непосредственного обращения к ячейке следует использовать свойство рабочего листа Cells, например:
OMySheet.Cells(1,1).Value = "Hello World"
Числа в скобках, разделенные запятой, являются координатами ячейки в формате RC. Первое число задает номер строки, второе – номер столбца. Вместо чисел допускается указывать имена целочисленных переменных, определенных в VFP.
После совершения необходимых операций с данными на рабочем листе приложение Excel следует сделать видимым, что производится командой oExcel.Visible=.T.
Таким образом, следующий программный код создает новую книгу Excel и передает в нее текстовую строку:
*создаем объект приложения
oExcel=CREATEOBJECT('Excel.Application')
*создаем в приложении новую книгу
oMyBook=oExcel.Workbooks.Add()
*получаем ссылку на первый рабочий лист
oMySheet=oMyBook.Worksheets(1)
*заносим в ячейку А1 текстовую надпись Hello World
oMySheet.Cells(1,1).Value="Hello World"
*делаем приложение видимым на экране
oExcel.Visible=.T.
Программный код можно прописать либо в командном окне (при этом каждая команда немедленно выполняется и доступна интерактивная подсказка синтаксиса), либо в программном модуле, например в событии нажатия кнопки на форме (при этом команды будут выполнены только после запуска модуля и, к сожалению, интерактивная помощь не доступна, т.к. VFP просто не знает о чем подсказывать). Рекомендуется все малознакомые команды вначале пробовать в командном окне, а только потом прописывать их в программных модулях (только без фанатизма, прописать цикл в командном окне просто не получится).