Интерфейс программы + Excel
Всем доброго времени суток!
Расскажу вкратце суть дела. Есть некая программа, представляющая из себя интерфейс с определенными текстовыми полями для ввода. Есть некая таблица Excel, в которой хранятся данные для ввода в эти поля. Для простоты ограничимся полями "Фамилия", "Имя" и "Должность". Суть скрипта: брать из Excel данные, вносить их в программу, нажимать на определенные батоны в программе, сохранять экспортный файл, снова вносить в программу данные (следующую строку из Excel) и так далее. Я за это дело только сажусь, но боюсь проблем, которые возникнут на этапе перебора данных из Excel. Поэтому хотелось бы спросить: есть ли у кого-нибудь что-то подобное, чтобы можно было взять за основу и перестроить под себя? Буду очень благодарен за любые советы! |
а напрямую не залить?
импорт/экспорт? |
Нет, доступа к БД программы у меня нет, единственная возможность хоть как-то автоматизировать процесс - имитировать действия человека: загнал данные в поля, нажал ПОИСК, нажал ЭКСПОРТ, сохранил и так далее.
|
Более конкретный вопрос: какие UDF (и синтаксис пожалуйста, если не сложно) отвечают за
-копирование в буфер обмена -вставка из буфера обмена ? |
Frost_Imp, мде...
1. почему сразу UDF? 2. если все же не UDF, то clipget и clipput. help в руки и вперед :) 3. ну а если все же ну очень хочется UDF, то ClipBoard.au3. в хелпе, да и в самой либе все конкретно расписано (это я к синтаксису) а если вернуться к теме (к той что указано в шапке), то тут Excel.au3 в самый раз. данные можно перегонять через тот же буфер, или промежуточный файл |
Всем доброго времени суток!
Вопрос по Экселю (согласно теме топика). Итак, 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, то есть некое порядковое число. Соответственно оперировать такой датой в дальнейшем (в частности, вставить туда, куда мне нужно) я не могу. Подскажите, как избавиться от сей напасти... |
Цитата:
#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) ;отметить в экселе что ячейка прочтена и обработана |
SvetlanaK, добрый день. Прочитал Ваш пост и это то что я искал на форуме... Есть один вопрос. Как изменится код (или как его изменить) если результат работы внешней программы надо забрать из определённого окна и вставить в эксель? Не знаю Вы еще тут появляетесь (сайт) или нет..., но очень хотелось бы получить от Вас ответ.
|
Время: 17:53. |
Время: 17:53.
© OSzone.net 2001-