Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Работа с контролами на страницах Excel (http://forum.oszone.net/showthread.php?t=133179)

EugeneAbl 26-02-2009 10:33 1049163

Работа с контролами на страницах Excel
 
Добрый день всем.
Кто-нибудь знает решение по управлению контролами на страницах Excel из AutoIt или AutoItX из c# ?

amel27 27-02-2009 05:13 1050114

контролы вроде относятся к окну Excel, а листы/страницы к документу и там не контролы, а ячейки... о чем речь?

EugeneAbl 27-02-2009 10:25 1050240

Имеются ввиду элементы управления, которые можно добавлять на листы экселя в режиме конструктора (кнопки, переключатели, списки, чекбоксы и т.д.).
Потом с ними можно работать из макросов.
Если посмотреть на лист экселя из AutoIt Windwow Info, то их (элементов управления) не видно, ни во вкладке Window, ни во вкладке Control.
И как ими можно управлять из AutoIt или AutoItX не понятно.

amel27 27-02-2009 12:41 1050362

доступ к объектам очевидно через 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

EugeneAbl 27-02-2009 13:31 1050407

На приведенный код дает ошибку
---------
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".
---------
По ссылке ходил еще раньше.
Там много чего есть по работе с экселем, но по управлению контролами не нашел ничего...

amel27 27-02-2009 13:52 1050437

ну дык _ExcelAttach() подключается к уже открытой таблице Книга1.xls с контролом "CommandButton1" на 1-м листе

EugeneAbl 27-02-2009 14:01 1050444

правильно, книга открыта, на ней кнопка с именем и капшином как в примере кода и при этом ошибка

amel27 28-02-2009 04:31 1051003

как следует из текста ошибки, проблема именно в _ExcelAttach() - она не подключается к документу... собственно, открытие/подключение к книге Excel немного в стороне от заявленного в теме вопроса ;), проверьте - точно ли соответствует значение $strTitle титлу окна в действительности, попробуйте другие варианты подключения/открытия файлов, проверяйте значение, возвращаемое _ExcelAttach() и аналогичными UDF, например через IsObj()

теперь по теме - COM-модель, используемая в библиотеке ExcelCOM описана на сайте Microsoft, оттуда и инфа по контролам:
http://msdn.microsoft.com/en-us/libr...ffice.11).aspx

EugeneAbl 28-02-2009 09:22 1051036

amel27, спасибо !
Буду дальше разбираться...


Время: 17:50.

Время: 17:50.
© OSzone.net 2001-