|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Интерфейс программы + Excel |
|
Интерфейс программы + Excel
|
Пользователь Сообщения: 53 |
Профиль | Отправить PM | Цитировать Всем доброго времени суток!
Расскажу вкратце суть дела. Есть некая программа, представляющая из себя интерфейс с определенными текстовыми полями для ввода. Есть некая таблица Excel, в которой хранятся данные для ввода в эти поля. Для простоты ограничимся полями "Фамилия", "Имя" и "Должность". Суть скрипта: брать из Excel данные, вносить их в программу, нажимать на определенные батоны в программе, сохранять экспортный файл, снова вносить в программу данные (следующую строку из Excel) и так далее. Я за это дело только сажусь, но боюсь проблем, которые возникнут на этапе перебора данных из Excel. Поэтому хотелось бы спросить: есть ли у кого-нибудь что-то подобное, чтобы можно было взять за основу и перестроить под себя? Буду очень благодарен за любые советы! |
|
Отправлено: 11:53, 04-09-2009 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать а напрямую не залить?
импорт/экспорт? |
Отправлено: 12:36, 04-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 53
|
Профиль | Отправить PM | Цитировать Нет, доступа к БД программы у меня нет, единственная возможность хоть как-то автоматизировать процесс - имитировать действия человека: загнал данные в поля, нажал ПОИСК, нажал ЭКСПОРТ, сохранил и так далее.
|
Отправлено: 14:19, 04-09-2009 | #3 |
Пользователь Сообщения: 53
|
Профиль | Отправить PM | Цитировать Более конкретный вопрос: какие UDF (и синтаксис пожалуйста, если не сложно) отвечают за
-копирование в буфер обмена -вставка из буфера обмена ? |
Отправлено: 17:30, 04-09-2009 | #4 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Frost_Imp, мде...
1. почему сразу UDF? 2. если все же не UDF, то clipget и clipput. help в руки и вперед 3. ну а если все же ну очень хочется UDF, то ClipBoard.au3. в хелпе, да и в самой либе все конкретно расписано (это я к синтаксису) а если вернуться к теме (к той что указано в шапке), то тут Excel.au3 в самый раз. данные можно перегонять через тот же буфер, или промежуточный файл |
|
------- Отправлено: 19:24, 04-09-2009 | #5 |
Пользователь Сообщения: 53
|
Профиль | Отправить PM | Цитировать Всем доброго времени суток!
Вопрос по Экселю (согласно теме топика). Итак, 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, то есть некое порядковое число. Соответственно оперировать такой датой в дальнейшем (в частности, вставить туда, куда мне нужно) я не могу. Подскажите, как избавиться от сей напасти... |
Отправлено: 20:15, 16-09-2009 | #6 |
Новый участник Сообщения: 23
|
Профиль | Отправить PM | Цитировать Цитата Frost_Imp:
#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) ;отметить в экселе что ячейка прочтена и обработана |
|
Отправлено: 16:38, 05-11-2009 | #7 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать SvetlanaK, добрый день. Прочитал Ваш пост и это то что я искал на форуме... Есть один вопрос. Как изменится код (или как его изменить) если результат работы внешней программы надо забрать из определённого окна и вставить в эксель? Не знаю Вы еще тут появляетесь (сайт) или нет..., но очень хотелось бы получить от Вас ответ.
|
Отправлено: 00:04, 08-08-2022 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Программы Adobe в 2010 будут более уязвимы, чем программы Microsoft | OSZone News | Новости информационных технологий | 0 | 30-12-2009 20:30 | |
Интерфейс - Не сортируються программы по алфавиту в Пуск-Все программы | Borod888 | Microsoft Windows 2000/XP | 10 | 21-12-2009 13:20 | |
Интерфейс DVD | WorF | Оптические приводы | 5 | 14-07-2008 07:15 | |
Языковый интерфейс | Altmer | Microsoft Windows 2000/XP | 5 | 04-10-2005 16:43 |
|