Показать полную графическую версию : сканирование xls
Surround
23-02-2008, 14:20
Hi!
есть такая задача: нужно заглядывать в xls файлик, и если там какая-то ячейка выделена красным цветом, то в трее выводить об этом уведомление.
Есть уточнение - красный цвет в ячейке проставляется автоматически или ещё кем то кроме Вас?
А "трей" можно заменить всплывающей подсказкой - которая будет автоматически разворачивать окно программы с вашим файлом и находиться по середине экрана когда произойдёт событие с окрашиванием ячейки в красный цвет. Можно заменить "окрашивание ячейки в красный цвет" - "всплывающей подсказкой с указнием соответствующей ячейки". Словом - есть варианты
Surround
23-02-2008, 18:15
azbest, файл отчетности выполнения плана. Красным ячейка проставляется пользователем. А программка, лежащая на каждом компе, сканирует этот общий файл. И если в нем есть красная ячейка, выдавала бы предупреждение.
BlackEric
24-02-2008, 12:51
Первый вариант - коннектитесь к Excel с открытым файлом и проверяете выделена ли ячейка. Как это сделать читаете в недрах справки по VBA, там это где-то было.
Второй - на LOR недавно была тема, что MS отркыла форматы документов Office, если это верно, то можно почитать их и тогда возможно получится проверять наличие ячейки не открывая файл в Exel.
Я не знаю как сканирует ваша програмка на каждом компьютере один общий для этого файл.
Но чисто теоретически я решил бы это так.
Автоматически определил сколько в списке есть строк.
Оформил цикл построчного просмотра конкретного столбца (скорее всего в нём и проставляются "атрибуты" просматриваемых ячеек) со считыванием "атрибутов" просматриваемой ячейки и если её фоновый цвет - красный, - записал бы её порядковый номер в какую нибудь новую строку, а в конце просмотра общего списка - вывел бы результат с адресами в любую свободную строку.
А потом ещё бы оформил один макрос с перемещением по указанным адресам и предоставлением пользователю делать с этим адресами то что ему нужно по работе.
BlackEric
25-02-2008, 19:57
azbest, здесь основная проблема, как получить фоновый цвет ячейки, а пройтись в цикле по столбцу не проблема, все есть в справке по VBA.
Alexej77
25-02-2008, 21:15
BlackEric, проблемы с определением цвета нет - http://forum.oszone.net/post-735336-5.html.
Surround, сколько компов в сети, и как часто надо опрашивать файл? Нагрузка-то на сеть возрастет...
Surround
26-02-2008, 00:26
Alexej77, интервал опроса настраивается.
VBA? но ведь цель - сделать это средствами C#. Хотя как вариант, можно просто опросить текст, ведь в выделенной ячейне он что-то типа "не выполнено" и более нигде не встречается
Alexej77
26-02-2008, 21:12
Surround, на VBA пример того, как определить цвет ячейки. На C# примерно также, я думаю, будет. Кстати, про C# ты только сейчас написал...
Я тут вот чего придумал. В xls-файле на VBA написать процедуру, которая будет отсылать широковещательное сообщение в сеть при наличии ячейки нужного цвета. Эту процедуру повесить на событие BeforeSave. Процедура будет выполняться в момент сохранения файла, но перед физическим сохранением, которое произойдет сразу после окончания процедуры. На компах в сети будет установлена прога (или сервис) на C#, который будет слушать сеть, и при появлении нужного сообщения выдавать оповещение. Нагрузка на сеть будет минимальная, а о появлении в файле нужной ячейки сразу станет известно всем.
В простейшем случае можно отправлять сообщения с помощью "Net Send".
здесь основная проблема, как получить фоновый цвет ячейки
Можно двумя путями.
1 - через объектную переменную "цвет фона ячейки" и оператор сравнения "тот цвет или не тот"
2 - в VBA есть цифровые константы отвечающие за несколько основных цветов:
красный vbRed 0xFF
зелёный vbGreen 0xFF00
синий vbBlue 0xFF0000
жёлтый vbYellow 0xFFFF
а задаются эти константы - в "операторах" BackColor, ForeColor, BorderColor - описывающих свойства ячейки.
Surround
27-02-2008, 15:37
Alexej77, отличная идея. Жаль только в написании сетевых приложений не силен
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.