Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получение данных по RTD средствами VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Получение данных по RTD средствами VBA
virtuoz Дата: Понедельник, 30.09.2019, 09:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток. Никак не могу разобраться в обновление данных по протоколу RTD.

Суть. В Excell получаю данные по RTD путем нажатия обновления F9 с интервалом несколько секунд. Нажимать приходится 4 раза иначе обновляются не все данные.
При попытке сделать макрос VBA, делающий это за меня, обновление работает, как при однократном нажатии F9, т.е. в результате обновляются не все данные.

Пробовал задержки выполнения в разных интерпритациях:
sleep
Application.Wait Time


не помогло

Есть ли какое-то красивое решение данной проблемы?
 
Ответить
СообщениеДоброго времени суток. Никак не могу разобраться в обновление данных по протоколу RTD.

Суть. В Excell получаю данные по RTD путем нажатия обновления F9 с интервалом несколько секунд. Нажимать приходится 4 раза иначе обновляются не все данные.
При попытке сделать макрос VBA, делающий это за меня, обновление работает, как при однократном нажатии F9, т.е. в результате обновляются не все данные.

Пробовал задержки выполнения в разных интерпритациях:
sleep
Application.Wait Time


не помогло

Есть ли какое-то красивое решение данной проблемы?

Автор - virtuoz
Дата добавления - 30.09.2019 в 09:45
Апострофф Дата: Понедельник, 30.09.2019, 10:23 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 126 ±
Замечаний: 0% ±

Excel 1997
virtuoz, OnTime погуглите...
 
Ответить
Сообщениеvirtuoz, OnTime погуглите...

Автор - Апострофф
Дата добавления - 30.09.2019 в 10:23
virtuoz Дата: Понедельник, 30.09.2019, 12:43 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Апострофф, попробовал в нескольких видах. обновляет только один раз даже в таком варианте:

[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate

End Sub

Sub LoadRTD4()

Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"

End Sub
[/vba]


Сообщение отредактировал virtuoz - Понедельник, 30.09.2019, 16:21
 
Ответить
СообщениеАпострофф, попробовал в нескольких видах. обновляет только один раз даже в таком варианте:

[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate

End Sub

Sub LoadRTD4()

Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"
Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"

End Sub
[/vba]

Автор - virtuoz
Дата добавления - 30.09.2019 в 12:43
китин Дата: Понедельник, 30.09.2019, 12:46 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
virtuoz, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеvirtuoz, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Автор - китин
Дата добавления - 30.09.2019 в 12:46
virtuoz Дата: Понедельник, 30.09.2019, 16:22 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
virtuoz, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Спасибо. Исправлено
 
Ответить
Сообщение
virtuoz, - Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Спасибо. Исправлено

Автор - virtuoz
Дата добавления - 30.09.2019 в 16:22
Roman777 Дата: Понедельник, 30.09.2019, 18:31 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
virtuoz,
[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate
Call LoadRTD4()
End Sub

Sub LoadRTD4()

Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"

End Sub
[/vba]
А так работать не будет?


Много чего не знаю!!!!
 
Ответить
Сообщениеvirtuoz,
[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate
Call LoadRTD4()
End Sub

Sub LoadRTD4()

Application.OnTime Now + TimeValue("00:00:03"), "LoadRTD"

End Sub
[/vba]
А так работать не будет?

Автор - Roman777
Дата добавления - 30.09.2019 в 18:31
virtuoz Дата: Понедельник, 30.09.2019, 18:44 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016

А так работать не будет?

Работает!

Красиво! Я так понимаю он сам на себя на вечно зациклен через Call?

Подскажите, как его прокрутить 4 раза, вместо бесконечности?
 
Ответить
Сообщение

А так работать не будет?

Работает!

Красиво! Я так понимаю он сам на себя на вечно зациклен через Call?

Подскажите, как его прокрутить 4 раза, вместо бесконечности?

Автор - virtuoz
Дата добавления - 30.09.2019 в 18:44
virtuoz Дата: Понедельник, 30.09.2019, 18:55 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума
Решил, завершает сам себя при отсутствии ошибок в обновлении данных, обычно 3х раз хватало. Количество ошибок Берется из ячейки J6

[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate
If Range("J6") = 0 Then End
Call LoadRTD4
End Sub

Sub LoadRTD4()
Application.OnTime Now + TimeValue("00:00:01"), "LoadRTD"
End Sub
[/vba]

Еще раз спасибо!


Сообщение отредактировал китин - Вторник, 01.10.2019, 07:56
 
Ответить
СообщениеИзлишнее цитирование удалено администрацией - это нарушение п.5j Правил форума
Решил, завершает сам себя при отсутствии ошибок в обновлении данных, обычно 3х раз хватало. Количество ошибок Берется из ячейки J6

[vba]
Код
Sub LoadRTD()

Sheets("Loader").Select
ActiveSheet.Calculate
If Range("J6") = 0 Then End
Call LoadRTD4
End Sub

Sub LoadRTD4()
Application.OnTime Now + TimeValue("00:00:01"), "LoadRTD"
End Sub
[/vba]

Еще раз спасибо!

Автор - virtuoz
Дата добавления - 30.09.2019 в 18:55
Roman777 Дата: Вторник, 01.10.2019, 06:56 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Я так понимаю он сам на себя на вечно зациклен через Call

Дело не в операторе Call. Функцию и процедуру без параметров (или с одним параметром) можно вызвать и без этого оператора. Это обычный вызов процедуры "LoadRTD4". Просто мы каждый раз после выполнения процедуры подписываемся на её выполнение снова.


Много чего не знаю!!!!
 
Ответить
Сообщение
Я так понимаю он сам на себя на вечно зациклен через Call

Дело не в операторе Call. Функцию и процедуру без параметров (или с одним параметром) можно вызвать и без этого оператора. Это обычный вызов процедуры "LoadRTD4". Просто мы каждый раз после выполнения процедуры подписываемся на её выполнение снова.

Автор - Roman777
Дата добавления - 01.10.2019 в 06:56
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!