![]() |
сканирование xls
Hi!
есть такая задача: нужно заглядывать в xls файлик, и если там какая-то ячейка выделена красным цветом, то в трее выводить об этом уведомление. |
Есть уточнение - красный цвет в ячейке проставляется автоматически или ещё кем то кроме Вас?
А "трей" можно заменить всплывающей подсказкой - которая будет автоматически разворачивать окно программы с вашим файлом и находиться по середине экрана когда произойдёт событие с окрашиванием ячейки в красный цвет. Можно заменить "окрашивание ячейки в красный цвет" - "всплывающей подсказкой с указнием соответствующей ячейки". Словом - есть варианты |
azbest, файл отчетности выполнения плана. Красным ячейка проставляется пользователем. А программка, лежащая на каждом компе, сканирует этот общий файл. И если в нем есть красная ячейка, выдавала бы предупреждение.
|
Первый вариант - коннектитесь к Excel с открытым файлом и проверяете выделена ли ячейка. Как это сделать читаете в недрах справки по VBA, там это где-то было.
Второй - на LOR недавно была тема, что MS отркыла форматы документов Office, если это верно, то можно почитать их и тогда возможно получится проверять наличие ячейки не открывая файл в Exel. |
Я не знаю как сканирует ваша програмка на каждом компьютере один общий для этого файл.
Но чисто теоретически я решил бы это так. Автоматически определил сколько в списке есть строк. Оформил цикл построчного просмотра конкретного столбца (скорее всего в нём и проставляются "атрибуты" просматриваемых ячеек) со считыванием "атрибутов" просматриваемой ячейки и если её фоновый цвет - красный, - записал бы её порядковый номер в какую нибудь новую строку, а в конце просмотра общего списка - вывел бы результат с адресами в любую свободную строку. А потом ещё бы оформил один макрос с перемещением по указанным адресам и предоставлением пользователю делать с этим адресами то что ему нужно по работе. |
azbest, здесь основная проблема, как получить фоновый цвет ячейки, а пройтись в цикле по столбцу не проблема, все есть в справке по VBA.
|
BlackEric, проблемы с определением цвета нет - http://forum.oszone.net/post-735336-5.html.
Surround, сколько компов в сети, и как часто надо опрашивать файл? Нагрузка-то на сеть возрастет... |
Alexej77, интервал опроса настраивается.
VBA? но ведь цель - сделать это средствами C#. Хотя как вариант, можно просто опросить текст, ведь в выделенной ячейне он что-то типа "не выполнено" и более нигде не встречается |
Surround, на VBA пример того, как определить цвет ячейки. На C# примерно также, я думаю, будет. Кстати, про C# ты только сейчас написал...
Я тут вот чего придумал. В xls-файле на VBA написать процедуру, которая будет отсылать широковещательное сообщение в сеть при наличии ячейки нужного цвета. Эту процедуру повесить на событие BeforeSave. Процедура будет выполняться в момент сохранения файла, но перед физическим сохранением, которое произойдет сразу после окончания процедуры. На компах в сети будет установлена прога (или сервис) на C#, который будет слушать сеть, и при появлении нужного сообщения выдавать оповещение. Нагрузка на сеть будет минимальная, а о появлении в файле нужной ячейки сразу станет известно всем. В простейшем случае можно отправлять сообщения с помощью "Net Send". |
Цитата:
1 - через объектную переменную "цвет фона ячейки" и оператор сравнения "тот цвет или не тот" 2 - в VBA есть цифровые константы отвечающие за несколько основных цветов: красный vbRed 0xFF зелёный vbGreen 0xFF00 синий vbBlue 0xFF0000 жёлтый vbYellow 0xFFFF а задаются эти константы - в "операторах" BackColor, ForeColor, BorderColor - описывающих свойства ячейки. |
Alexej77, отличная идея. Жаль только в написании сетевых приложений не силен
|
Время: 10:00. |
Время: 10:00.
© OSzone.net 2001-