VBA для тех кто любит думать


Открытый и закрытый коды - часть 5


Как все это сделать, чтобы работало?"

Для работы из одного приложения Office с другим лучше всего использовать технологию ActiveX. Она основана на имеющейся в Office возможности представлять одну программу в другой как некий обьект, с которым можно работать теми же командами, что используются при непосредственной работе с этой программой.

Так, чтобы можно было из Word'ового макроса работать с Excel'ем, следует создать обьект Excel.Sheet (здесь "es" - простое наименование переменной, у вас может быть любым).

 

Dim es As Object

Set es = CreateObject("Excel.Sheet")

 

Если надо сразу открыть какой-либо файл Excel'а, то можно использовать команду GetObject:

 

Set es= GetObject("Путь к файлу Excel'а")

 

При желании можно сделать созданный обьект Excel видимым:

 

es.Application.Visible = True

 

Теперь можно этому обьекту es (т.е. просто запущенному Excel'у) посылать команды такие же, как и в макросах Excel'а  (предваряя текстом "es.Application." те из команд, которые не требуют прямого указания обьекта, - так как надо дать понять программе, что работа идет именно с Excel'ем). Так, чтобы открыть файл Excel'а, можно также дать команду

 

es.Application.Workbooks.Open FileName:="Путь к файлу Excel'а"

 

а чтобы, например, поместить в первую ячейку открытой книги текст, используйте команду

 

es.Cells(1, 1).Value = "Это столбец A, строка 1"

 

В принципе я бы вам посоветовал поместить тот макрос, который Вы планировали для Excel'а, именно в исходный Word'овый, переписав его команды в соответствии с принципом связывания (т.е. управления одним приложением из другого - так, как описано выше).

Закрыть Excel можно командой

 

es.Application.Quit

Set es= Nothing

 

Если работать с таблицей из Word почему-либо нельзя, и требуется именно вызвать Excel'евский макрос, то для вызова макроса следует использовать команду




Начало  Назад  Вперед