Показать полную графическую версию : Работа с контролами на страницах Excel
EugeneAbl
26-02-2009, 10:33
Добрый день всем.
Кто-нибудь знает решение по управлению контролами на страницах Excel из AutoIt или AutoItX из c# ?
контролы вроде относятся к окну Excel, а листы/страницы к документу и там не контролы, а ячейки... о чем речь?
EugeneAbl
27-02-2009, 10:25
Имеются ввиду элементы управления, которые можно добавлять на листы экселя в режиме конструктора (кнопки, переключатели, списки, чекбоксы и т.д.).
Потом с ними можно работать из макросов.
Если посмотреть на лист экселя из AutoIt Windwow Info, то их (элементов управления) не видно, ни во вкладке Window, ни во вкладке Control.
И как ими можно управлять из AutoIt или AutoItX не понятно.
доступ к объектам очевидно через COM, а вот можно ли программно сэмулировать, скажем, клик на кнопке?
...если по простому, то можно так:
#include <ExcelCOM_UDF.au3>
$strTitle = "Microsoft Excel - Книга1.xls"
$objApp = _ExcelAttach($strTitle, "Title")
$objApp.Worksheets(1).OLEObjects("CommandButton1").Object.Caption = "My Button"
$objApp.Worksheets(1).OLEObjects("CommandButton1").Object.Activate
WinActivate($strTitle, "")
WinWaitActive($strTitle, "")
Send("{SPACE}")
на всякий случай: Yet Another -- ExcelCOM UDF, Proceeding by Community-Established UDF Standards (http://www.autoitscript.com/forum/index.php?showtopic=34302&st=0&p=249975&#entry249975)
EugeneAbl
27-02-2009, 13:31
На приведенный код дает ошибку
---------
Line 6 (File "C:\tmp\xls\1.au3"):
$objApp.Worksheets(1).OLEObjects("CommandButton1").Object.Caption = "My Button"
$objApp^ ERROR
Error: Variable must be of type "Object".
---------
По ссылке ходил еще раньше.
Там много чего есть по работе с экселем, но по управлению контролами не нашел ничего...
ну дык _ExcelAttach() подключается к уже открытой таблице Книга1.xls с контролом "CommandButton1" на 1-м листе
EugeneAbl
27-02-2009, 14:01
правильно, книга открыта, на ней кнопка с именем и капшином как в примере кода и при этом ошибка
как следует из текста ошибки, проблема именно в _ExcelAttach() - она не подключается к документу... собственно, открытие/подключение к книге Excel немного в стороне от заявленного в теме вопроса ;), проверьте - точно ли соответствует значение $strTitle титлу окна в действительности, попробуйте другие варианты подключения/открытия файлов, проверяйте значение, возвращаемое _ExcelAttach() и аналогичными UDF, например через IsObj()
теперь по теме - COM-модель, используемая в библиотеке ExcelCOM описана на сайте Microsoft, оттуда и инфа по контролам:
http://msdn.microsoft.com/en-us/library/aa272268(office.11).aspx
EugeneAbl
28-02-2009, 09:22
amel27, спасибо !
Буду дальше разбираться...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.