Показать полную графическую версию : Интерфейс программы + Excel
Frost_Imp
04-09-2009, 11:53
Всем доброго времени суток!
Расскажу вкратце суть дела. Есть некая программа, представляющая из себя интерфейс с определенными текстовыми полями для ввода. Есть некая таблица Excel, в которой хранятся данные для ввода в эти поля. Для простоты ограничимся полями "Фамилия", "Имя" и "Должность".
Суть скрипта:
брать из Excel данные, вносить их в программу, нажимать на определенные батоны в программе, сохранять экспортный файл, снова вносить в программу данные (следующую строку из Excel) и так далее.
Я за это дело только сажусь, но боюсь проблем, которые возникнут на этапе перебора данных из Excel. Поэтому хотелось бы спросить: есть ли у кого-нибудь что-то подобное, чтобы можно было взять за основу и перестроить под себя?
Буду очень благодарен за любые советы!
а напрямую не залить?
импорт/экспорт?
Frost_Imp
04-09-2009, 14:19
Нет, доступа к БД программы у меня нет, единственная возможность хоть как-то автоматизировать процесс - имитировать действия человека: загнал данные в поля, нажал ПОИСК, нажал ЭКСПОРТ, сохранил и так далее.
Frost_Imp
04-09-2009, 17:30
Более конкретный вопрос: какие UDF (и синтаксис пожалуйста, если не сложно) отвечают за
-копирование в буфер обмена
-вставка из буфера обмена
?
Frost_Imp, мде...
1. почему сразу UDF?
2. если все же не UDF, то clipget и clipput. help в руки и вперед :)
3. ну а если все же ну очень хочется UDF, то ClipBoard.au3. в хелпе, да и в самой либе все конкретно расписано (это я к синтаксису)
а если вернуться к теме (к той что указано в шапке), то тут Excel.au3 в самый раз. данные можно перегонять через тот же буфер, или промежуточный файл
Frost_Imp
16-09-2009, 20:15
Всем доброго времени суток!
Вопрос по Экселю (согласно теме топика).
Итак, 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
брать из 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
SvetlanaK, добрый день. Прочитал Ваш пост и это то что я искал на форуме... Есть один вопрос. Как изменится код (или как его изменить) если результат работы внешней программы надо забрать из определённого окна и вставить в эксель? Не знаю Вы еще тут появляетесь (сайт) или нет..., но очень хотелось бы получить от Вас ответ.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.