Здравствуйте!
Есть код - смотрите ниже. Данный код работает только если использовать только что открытое окно:
Если использовать уже открытое окно, то скрипт не работает. Открытое окно определяется так:
Подскажите пожалуйста почему? Если будет нужно, прикреплю файлы.
Полный код скрипта:
Добавлено:
Может надо ссылку на объект создать ... а как? Я уже всё перепробовал ...
Есть код - смотрите ниже. Данный код работает только если использовать только что открытое окно:
Код:
$hWnd = _IECreate(@ScriptDir & '\test.html')
Если использовать уже открытое окно, то скрипт не работает. Открытое окно определяется так:
Код:
$hWnd = WinWait("[TITLE:" & $sCellTitle & "; CLASS:" & $sCellClass & "]", "", 2)
If Not $hWnd Then
MsgBox(16+4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
_ExcelBookClose($oExcel, 0, 1) ;Этот метод при указанных параметрах закрывает рабочую книгу, если в ней были сделаны изменения - вызывается стандартный запрос Excel на сохранение изменений
Exit
EndIf
WinActivate($hWnd) ;заход в окно програмы
Подскажите пожалуйста почему? Если будет нужно, прикреплю файлы.
Полный код скрипта:
Код:
#include <IE.au3>
#include <ExcelCOM_UDF.au3>
#RequireAdmin
Opt("WinTitleMatchMode", 4)
;Актуален только при наличии формы. Просто таблица не подходит.
HotKeySet("{ESC}", "Terminate")
Func Terminate()
Exit 0
EndFunc
$sFilePath = @ScriptDir & "\База.xlsx" ;Существующая рабочая книга Excel
$oExcel = _ExcelBookOpen($sFilePath)
If @error = 1 Then
MsgBox(16+4096, "Ошибка!", "Ошибка OLE\COM")
Exit
ElseIf @error = 2 Then
MsgBox(16+4096, "Ошибка!", "Файл Excel не существует или имеет неправильный формат!")
Exit
EndIf
$sCellMax = $oExcel.WorkSheets("Настройка").Cells(2, 2).Value
;даные для функции ControlSend
$sCellTitle = $oExcel.WorkSheets("Настройка").Cells(2, 7).Value ;Заголовок окна
$sCellClass = $oExcel.WorkSheets("Настройка").Cells(4, 7).Value ;Класс окна
;~ $hWnd = _IECreate(@ScriptDir & '\test.html')
$hWnd = WinWait("[TITLE:" & $sCellTitle & "; CLASS:" & $sCellClass & "]", "", 2)
If Not $hWnd Then
MsgBox(16+4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта.')
_ExcelBookClose($oExcel, 0, 1) ;Этот метод при указанных параметрах закрывает рабочую книгу, если в ней были сделаны изменения - вызывается стандартный запрос Excel на сохранение изменений
Exit
EndIf
WinActivate($hWnd) ;заход в окно програмы
$oForm = _IEFormGetObjByName ($hWnd, "ExampleForm")
; Данные в столбце А могут быть только 0 (снять)
for $i = 0 to $sCellMax - 1
$sReadCell = _ExcelReadCell($oExcel, "A" & $i + 1)
if $sReadCell = 0 then
_IEFormElementCheckboxSelect($oForm, $i, "", 1, "byIndex")
Sleep(1000)
EndIf
next
MsgBox(64, 'Сообщение', 'Скрипт завершён.')
Добавлено:
Сообщение автоматически объединено:
Может надо ссылку на объект создать ... а как? Я уже всё перепробовал ...