Компьютерный форум 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=149736)

Frost_Imp 04-09-2009 11:53 1211280

Интерфейс программы + Excel
 
Всем доброго времени суток!
Расскажу вкратце суть дела. Есть некая программа, представляющая из себя интерфейс с определенными текстовыми полями для ввода. Есть некая таблица Excel, в которой хранятся данные для ввода в эти поля. Для простоты ограничимся полями "Фамилия", "Имя" и "Должность".
Суть скрипта:
брать из Excel данные, вносить их в программу, нажимать на определенные батоны в программе, сохранять экспортный файл, снова вносить в программу данные (следующую строку из Excel) и так далее.
Я за это дело только сажусь, но боюсь проблем, которые возникнут на этапе перебора данных из Excel. Поэтому хотелось бы спросить: есть ли у кого-нибудь что-то подобное, чтобы можно было взять за основу и перестроить под себя?
Буду очень благодарен за любые советы!

axlwor 04-09-2009 12:36 1211322

а напрямую не залить?

импорт/экспорт?

Frost_Imp 04-09-2009 14:19 1211404

Нет, доступа к БД программы у меня нет, единственная возможность хоть как-то автоматизировать процесс - имитировать действия человека: загнал данные в поля, нажал ПОИСК, нажал ЭКСПОРТ, сохранил и так далее.

Frost_Imp 04-09-2009 17:30 1211598

Более конкретный вопрос: какие UDF (и синтаксис пожалуйста, если не сложно) отвечают за
-копирование в буфер обмена
-вставка из буфера обмена
?

kaster 04-09-2009 19:24 1211672

Frost_Imp, мде...
1. почему сразу UDF?
2. если все же не UDF, то clipget и clipput. help в руки и вперед :)
3. ну а если все же ну очень хочется UDF, то ClipBoard.au3. в хелпе, да и в самой либе все конкретно расписано (это я к синтаксису)

а если вернуться к теме (к той что указано в шапке), то тут Excel.au3 в самый раз. данные можно перегонять через тот же буфер, или промежуточный файл

Frost_Imp 16-09-2009 20:15 1220480

Всем доброго времени суток!
Вопрос по Экселю (согласно теме топика).
Итак, 2 слова о том, как эксель хранит даты...
При вводе даты в ячейку рабочего листа Excel она выглядит как нормальная календарная дата. Но во внутреннем представлении Excel даты — это порядковые номера от 1 до 2958325, потому что с 1 января 1900 года по 31 декабря 9999 года 2958325 дней. Таким образом, даты в интервале с 01.01.1900 по 31.12.9999 хранятся в Excel как соответствующий порядковый номер. Например, 31.05.57 хранится как 20971, т.к. между 01.01.1900 и 31.05.57 как раз 20971 день. Такое представление дат в Excel позволяет оперировать с ними как с числами. Система дат 1900 по умолчанию используется в Microsoft Excel для Windows.
Если пользоваться функцией _ExcelReadCell - в память (в переменную, в буфер - не важно) сохраняется не дата в привычном представлении, а дата в фотрате excel, то есть некое порядковое число. Соответственно оперировать такой датой в дальнейшем (в частности, вставить туда, куда мне нужно) я не могу.
Подскажите, как избавиться от сей напасти...

SvetlanaK 05-11-2009 16:38 1262449

Цитата:

Цитата Frost_Imp
брать из Excel данные, вносить их в программу, нажимать на определенные батоны в программе, »

писала я такую

#include <Date.au3>
#include <GUIConstants.au3>
#include <ExcelCOM_UDF.au3>


Global $Paused

HotKeySet("{ESC}", "Terminate")

Func Terminate()
Exit 0
EndFunc


$oExcel = ObjGet("C:\П.xls", "Excel.Application") ; "схватить" существующий объект Excel

For $i= 1 To 665 ;пробег по солбцу
$sReadCell = _ExcelReadCell($oExcel, "A" & $i)

WinActivate("Группы в") ;заход в окно програмы
Opt("MouseCoordMode",0)
MouseClick("left" ,604,618)
Send("{Delete 8}") ;сперва стереть то что было
Send($sReadCell,1) ;вставить прочтенное из эксель
Opt("MouseCoordMode",0)
MouseClick("left" ,749,619) ; нажать кнопку

;Sleep(50)
Do
Sleep(10) ;ждать пока курсор нестанет стрелкой
Until MouseGetCursor( ) = 2
_ExcelWriteCell($oExcel, "1", "B"&$i) ;отметить в экселе что ячейка прочтена и обработана

vetold74 08-08-2022 00:04 2989904

SvetlanaK, добрый день. Прочитал Ваш пост и это то что я искал на форуме... Есть один вопрос. Как изменится код (или как его изменить) если результат работы внешней программы надо забрать из определённого окна и вставить в эксель? Не знаю Вы еще тут появляетесь (сайт) или нет..., но очень хотелось бы получить от Вас ответ.


Время: 17:53.

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