Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Запуск макроса по таймеру
 
Добрый день.
Вопрос следующий... В таблицу excel постоянно выгружаются данные из сторонней программы, в день порядка 60 000 строк.
Требуется постоянно мониторить последние данные по выгрузке, использую следующий код ручным запуском (т.е. макрос запускаю кнопкой).

Код
Sub Proc()
   Range("A" & Rows.Count).End(xlUp).Offset(1).Select
End Sub

Подскажите пожалуйста, возможно автоматизировать запуск данного кода по таймеру (например: раз в секунду)?
Ну, или еще как вариант: при заполнении данных из выгрузки в ячейку (например, при заполнении последней пустой ячейки определенного столбца)?
Заранее спасибо за помощь!
Изменено: radonic - 27 Фев 2017 19:08:21
 
Читайте справку по ontime.
Я сам - дурнее всякого примера! ...
 
Спасибо за развернутый ответ, добрый человек, kuklp.

 
Здесь
Запуск макроса при изменении ячейки (привяжите к своей последней)
 
_Igor_61, спасибо, да макрос работает но, только при внесении данных в таблицу вручную. При выгрузке из сторонней программы к сожалению не работает (курсор не переходит на новую пустую ячейку).
Подскажите, где поправить?

Worksheet

Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H:H")) Is Nothing Then
Call Proc
End If
End Sub

Module1

Код
Sub Proc()
   Range("A" & Rows.Count).End(xlUp).Offset(1).Select
End Sub
Изменено: radonic - 27 Фев 2017 21:27:37
 
radonic,
Всеж зависит от задачи и процесса, можно например по мобытию Calculate или Change запускать эту процедуру. То есть после изменения данных сраотает то что вам надо. Нет изменений вам и не надо. Контроль этого,
Цитата
radonic написал:
(например, при заполнении последней пустой ячейки определенного столбца)
тоже можно сделать, но нужно где то хранить адрес последней ячейки (строки) для сравнения при изменении.
 
Цитата
БМВ написал:
ожно например по мобытию Calculate или Change запускать эту процедуру
При получении данных по DDE события change не возникает, а calculate возникнет только, если к этим данным привязана формула, например counta, или summ.
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
а calculate возникнет только, если к этим данным привязана формула, например counta, или summ.
ну мы то знаем, как это привязать :-)
 
Ребята, поделитесь опытом, пожалуйста, а то ТС у меня спрашивает (#5), а я в макросах не силен  :) Как я понимаю, нужно в какую-то ячейку вставить формулу, чтобы она считала, например, сумму в столбце с выгружаемыми данными, и как только эта сумма в процессе выгрузки будет меняться, будет работать calculate ?
 
   radonic, посмотрите здесь, возможно это то что Вам нужно
 
radonic, может так?
Код
Sub Proc()
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    Application.OnTime Now + TimeValue("00:00:05"), "Proc"
End Sub
Private Sub Workbook_Open()
    Proc
End Sub
 
_Igor_61, да.
Я сам - дурнее всякого примера! ...
 
kuklp, спасибо, я предполагал, что на верном пути!  :)
Осталось дождаться примера от ТС, чтоб увидеть как (где) и в каком формате получается выгрузка, чтобы правильно привязать формулу.
Хотя, может, ему уже удалось решить этот вопрос с помощью OnTime Now + TimeValue. Я вчера пробовал несколько подобных в #11 вариантов, но у меня макрос срабатывал только один единственный раз, при открытии книги, а чтобы он запускался через указанный промежуток времени так и не получилось, наверное, это тоже нужно вешать не на открытие книги, а на другое событие?
 
_Igor_61, а вот так?
Код
Sub FreqStart()
Dim i, frequency
frequency = 1000
Do
  If i < frequency Then i = i + 1 Else i = 0
  If i = 0 Then ProcedureTest
  DoEvents
Loop
End Sub
 
AAF
на сколько я помню, то при таком раскладе надо клавиатурку и мышку отключить :-) , дабы  DoEvents не оборвать. А в целом, зачем процессор греть?
Изменено: БМВ - 28 Фев 2017 15:28:48
 
Цитата
AAF написал:
а вот так?
Если бесполезного поедания ресурсов процессора не жалко :) Посмотрите на загрузку ядра во время выполнения.AAF, Вам Игорь пишет:
Цитата
_Igor_61 написал:
Осталось дождаться примера от ТС
Вы не реагируете((
Я сам - дурнее всякого примера! ...
 
AAF, спасибо огромное, Ваш код работает! :)

Код
Sub Proc()    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    Application.OnTime Now + TimeValue("00:00:05"), "Proc"
End Sub
Private Sub Workbook_Open()
    Proc
End Sub

Всем спасибо за участие и потраченное время!
Страницы: 1
Читают тему (гостей: 1)