логирование изменения в excel файле

Тема в разделе "Другие языки", создана пользователем Phrack, 6 дек 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    Есть ПО, которое выгружает данные в экселевский файл в определенную ячейку с рандомным промежутком времени. Нужно эти изменения логировать, т.е. в формате вида
    time A1(ячейка)
    06-12-2010 17:53:22 15
    06-12-2010 17:53:25 17
    06-12-2010 17:54:12 7

    Как видно, данные нужны с точностью до секунды, как поступить?
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    записывать в какю-то БД а при обращении к эксэлю формировать его динамически?
    но если честно то суть вопроса не ясна
     
  3. makia

    makia

    Регистр.:
    23 сен 2006
    Сообщения:
    273
    Симпатии:
    145
    Если файл excel всегда один и тот же (т.е. в него просто дописываются файлы), то, как вариант, написать/найти макрос для excel, который срабатывал бы при каждом открытии вашего excel-файла.

    Схема простая: как только файл открылся, макрос в txt пишет лог в нужном вам формате. Точность до секунд - это не проблема.

    Лично я в макросах не особо силен (все как-то формулами обходился), но решение вашего вопроса, наверняка, сможете найти здесь:Планета excel
     
    Phrack нравится это.
  4. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    вобще как мне объяснили, у человека всегда открыт ексель и в него прога(сторонняя) вываливает данные в определенные ячейки и обновляет данные на экране (я хз вобще это возможно или нет). Так вот нужно в тот же момент эти данные сливать в БД. Предвижу вопрос - перехватить данные между экселем и прогой нельзя, хуки использовать не могу.
     
  5. makia

    makia

    Регистр.:
    23 сен 2006
    Сообщения:
    273
    Симпатии:
    145
    Так ничего перехватывать и не надо. Тем более ексель вряд ли можно заточить под перехват (тут хз), да и не нужно наверное это.
    Проще опять же макросом для екселя. Только макрос в данном случае будет срабатывать не на открытие файла, а на заполнение ячеек в определенном диапазоне, листе или книге. Т.е. как только ячейки (листы, книги) из указанного вами диапазона заполняются, макрос пишет лог.

    В общем, ссылка в моем первом посте есть. Запости свой вопрос на том форуме, решение должно быть.

    P.S: макросы порой творят чудеса - можно и интервал проверки документа выставлять, и способы сохранения, и много чего еще.
     
  6. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    а старый добрый DDE тут может помочь?
     
  7. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    каким образом?

    PHP:
    With Worksheets("log"'запись в журнал
    iRwsLog = .Cells(Rows.Count, "B").End(xlUp).Row
    i = iRwsLog + 1 '
    пустая строка под таблицей данных
    .Cells(i2).Value Now 'дата, время
    End With
    предложили такой код, он по выполнению макроса вставляет дату и время. Кто знает как повесить его на событие?
     
Статус темы:
Закрыта.