Страницы: 1
RSS
Уведомление об ошибках с внешнего источника данных
 
Добрый день!

Механизм работы:
Есть внешний источник данных с сайта в интернете. На ресурсе размещена динамически обновляемая таблица, которая тянется в эксель. Обновление в экселе ежеминутное (поставил бы чаще, но возможности такой в экселе не нашел).

Проблема:
Иногда сайт, с которого тянется таблица - лежит.
Иногда на сайте нету инфы в этой таблице.

В обеих этих случаях я получаю уведомление от экселя, что либо сайт лежит, либо что данных нету. И пока я не нажму "ок" - эксель не будет обновлять данные. А это большая проблема, потому что данные нужно собирать постоянно.

Что хочу:
Чтобы не выскакивало уведомление об ошибках получения данных - я о них знаю. Я хочу, чтобы эксель продолжал каждую минуту пытаться тянуть инфу с сайта.

На данный момент я просто юзаю сторонний софт, который тыкает по этой кнопке "ок" - но хотелось бы избавиться от этого костыля.

Я много дней мучал поиск, но похожей проблемы нигде не нашел, по-этому надеюсь на вашу помощь.
Заранее спасибо!
 
Цитата
Jormen написал:
Обновление в экселе ежеминутное (поставил бы чаще, но возможности такой в экселе не нашел)
Сделайте обновление по таймеру, поищите по сайте Application.OnTime
Цитата
Jormen написал:
Чтобы не выскакивало уведомление об ошибках получения данных
On Error Resume Next ?
 
Вопрос на миллион: Каким образом тянется таблица? Файл в студию.
KL
 
Цитата
KL написал: Каким образом тянется таблица? Файл в студию.
Данные -> Получение внешних данных -> Из интернета

Цитата
Казанский написал: Сделайте обновление по таймеру, поищите по сайте Application.OnTime
Это, как я понимаю, нужно чтобы само обновление было прописано в VBA, а не так, как я сделал штатной функцией экселя? Если не сложно, сможете в моем файле показать, как это делать? С учетом того, чтобы была решена моя изначальная проблема.

Файл прикрепил
 
Вот такой вариант обновляется каждые 5 сек. Проверяйте. У меня нет возможности моделировать "Иногда на сайте нету инфы в этой таблице" :)
KL
 
Обновляет хорошо, спасибо

А вот с ошибками, походу, вопрос так и не решило. Если выдернуть интернет кабель, то вылазит ошибка, и пока не закроешь окошко, то пытаться опять обновлять не будет. Более того, нужно вручную будет опять запустить "Обновлялку"
 
Ну про выдергивание кабеля - это несколько иная вводная. Вам не кажется? Да, и принтскрин окошек с ошибками вывешивайте на будущее  - экономит время помогающему :) Вот так попробуйте.
Изменено: KL - 20.02.2016 17:03:20
KL
 
Jormen, пробуйте. Текущий статус выводится над диапазоном запроса.
Код
'обычный модуль

Const PERIOD = #12:00:20 AM# '20 сек, можно вводить #0:0:20#
Public nextTime As Date, qt As QueryTable, rStatus As Range

Private Sub Rfsh()
  On Error Resume Next
  qt.Refresh
  rStatus = IIf(Err, "Не удалось обновить ", "Обновлено ") & Time
  nextTime = Now + PERIOD
  Application.OnTime nextTime, "Rfsh"
End Sub

'модуль ЭтаКнига

Private Sub Workbook_Open()
  Set qt = Worksheets("Лист1").QueryTables(1)
  Set rStatus = qt.ResultRange.Cells(0, 2)
  Application.Run "Rfsh"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  On Error Resume Next
  Application.OnTime nextTime, "Rfsh", , False
End Sub

Изменено: Казанский - 20.02.2016 18:47:24 (М-да, страницу форума тоже надо рефрешить почаще :()
 
Оба варианта рабочие, огромное спасибо!

Правда, у меня совершенно не получается их применить в своем рабочем файле. Думал, разберусь в алгоритме и допилю у себя сам, но нет. Стыдно :(

Пытался использовать решение Казанского:
В частности, не понимаю, по какому принципу макрос определяет, какую таблицу обновлять (ибо если я добавляю ещё 1 источник внешних данных, то с ним это не работает, также копирование модулей в мой рабочий файл аналогичный результат для таблицы не дает)
Думал, может QueryTables(1) определяет, но измена значения в скобке результата не принесло..

Огромная просьба прояснить этот момент, либо помочь добавить это решение в мою книгу (в ней уже есть 1 макрос на звуковой сигнал, функциональность которого очень важна, а также в ней с 1 интернет страницы тянется сразу 4 таблицы)

Файл по ссылке на дропбоксе, ибо здесь его не пропускает ограничение в 100кб (вроде удалил все, что не нужно, но все равно вес превышает):

https://www.dropbox.com/s/rks2zyz6qubg2fw/%D0%96%D0%BE%D1%80%D0%BE.xlsm?dl=0
Страницы: 1
Наверх