Excel VBA Макросы: Автоматическое копирование данных из ячейки в строки ниже через заданный интервал времени.

Автор rs485, 29 июня 2018, 11:14

rs485

У вас нет примера макроса, который бы запускался с определённым интервалом времени и копировал данные из ячейки в строки ниже? Или простой пример записи данных каждый раз с новой строки.

В моём случае данные считываются с OPC сервера (показания измерительного прибора) в ячейку формулой: =SERVOPC|CLOCK!SECOND

Датчик температуры>OPC Сервер>Excel (с определённым интервалом времени).

Данные в реальном времени считывать получается, но обновление значений температуры происходит в одной и той же ячейке, а нужно чтобы обновлённые данные записывались каждый раз на ячейку ниже (для формирования архива).

[вложение удалено администратором]

Администратор

Есть два способа решить вашу задачу.

Способ 1
Макрос будет запускаться, когда будет изменяться значение в B2.
Но если на листе будет несколько формул, а не одна, как сейчас в примере формула находиться в B2, то нельзя узнать, в какой ячейке произошло изменение.

Способ 2
Можно запускать макрос через заданное кол-во времени, не зависимо от того, были изменения в B2 или нет.

Администратор

В этом файле есть макрос. Как тестировать?
Откройте файл, разрешите макросы, если в B2 будут изменения, то в столбец A будут вставляться дата и время, в столбец B будут вставляться данные.

Чтобы макрос работал, сделан доплист. Его вы можете скрыть.
Этот макрос сделан на основе способа 1, о котором я писал в предыдущем ответе.


[вложение удалено администратором]

rs485

Большое спасибо за помощь!!! Работает!!!

Только в моём случае необходимо запускать макрос через заданное кол-во времени (как правило 1-10 сек), не зависимо от того, были изменения в ячейках или нет.

Можно ли как то добавить секунды в формат даты.

[вложение удалено администратором]

Администратор

Создайте тему: Можно ли как то добавить секунды в формат даты?
Я в той теме отвечу.

Администратор

Как тестировать? Откройте файл, разрешите макросы, автоматически запустится макрос по заполнению столбцов A:B. Если в B2 ошибка, то макрос не будет заполнять столбцы A:B (ничего происходить не будет).
Макрос запускается через 10 секунд после последнего срабатывания.

Этот способ состоит из нескольких частей.
В модуле "ЭтаКнига" есть два макроса. Один макрос запускается после открытия файла и запускает макрос. Второй макрос запускается перед закрытием файла и отключает таймер.
В модуле "PUBLICS" находится глобальная переменная.
Сам макрос находится в модуле "Module1".

Чтобы остановить таймер, сделан макрос, который находится в модуле "STOP_TIMER".
Для этого макроса можно сделать кнопку или можете запустить макрос так: вкладка "Вид" - группа "Макросы" - верхняя кнопка - выберите макрос "STOP_TIMER".

Чтобы снова включить таймер, запстите макрос "Module1.Макрос".

Доплист для данного способа не используется.

[вложение удалено администратором]

rs485

Огромное спасибо! Всё работает как часы (данные с прибора добавляются и архивируются)!!!

Как правильно прописать в макросе адрес исходной ячейки (откуда будут копироваться данные) расположенной на другом листе (Лист2)?

[вложение удалено администратором]