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

Вход

Регистрация

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

 

= Мир MS Excel/Обновление данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление данных (Макросы/Sub)
Обновление данных
evgenyforever Дата: Среда, 20.09.2023, 13:49 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток, прошу помощи, при обновлении внешних данных возникает ошибка, (насколько я понимаю при разрыве соединения с источником возникает такая ошибка), т.е обновляет, но потом может выскочить данная ошибка и обновление приостанавливается, соответственно приостанавливается вся работа, приходится запускать вручную:



Просьба помочь изменить код, который отвечает за обновление этого источника данных:

[vba]
Код
Private Sub ОбновлениеПодключений()

    ' Макрос "Обновить подключения".

    Dim i As Long    
    
    Обновление подключений.
    Worksheets("ЕВРО").Range("A500").QueryTable.Refresh BackgroundQuery:=False
    Установка таймера.
    Application.OnTime Now + TimeValue("00:00:05"), "ОбновлениеПодключений"

    End Sub
[/vba]

Или же дописать код, который бы при появлении этой ошибки запускал бы текущий макрос автоматически.

Макрос полностью во вложении.
К сообщению приложен файл: makros_obnovlenija_dannykh.xlsb (49.3 Kb)


Сообщение отредактировал evgenyforever - Среда, 20.09.2023, 14:00
 
Ответить
СообщениеДоброго времени суток, прошу помощи, при обновлении внешних данных возникает ошибка, (насколько я понимаю при разрыве соединения с источником возникает такая ошибка), т.е обновляет, но потом может выскочить данная ошибка и обновление приостанавливается, соответственно приостанавливается вся работа, приходится запускать вручную:



Просьба помочь изменить код, который отвечает за обновление этого источника данных:

[vba]
Код
Private Sub ОбновлениеПодключений()

    ' Макрос "Обновить подключения".

    Dim i As Long    
    
    Обновление подключений.
    Worksheets("ЕВРО").Range("A500").QueryTable.Refresh BackgroundQuery:=False
    Установка таймера.
    Application.OnTime Now + TimeValue("00:00:05"), "ОбновлениеПодключений"

    End Sub
[/vba]

Или же дописать код, который бы при появлении этой ошибки запускал бы текущий макрос автоматически.

Макрос полностью во вложении.

Автор - evgenyforever
Дата добавления - 20.09.2023 в 13:49
Pelena Дата: Суббота, 23.09.2023, 08:47 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19137
Репутация: 4409 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Цитата evgenyforever, 20.09.2023 в 13:49, в сообщении № 1 ()
при появлении этой ошибки запускал бы текущий макрос автоматически

Можно не макрос запускать заново, а обновление включить в цикл. Правда, я бы всё же ограничила кол-во попыток. Например
[vba]
Код
    On Error Resume Next
    Do
        Application.Wait Now + TimeValue("00:00:05")
        Err.Clear
        Worksheets("ЕВРО").Range("A500").QueryTable.Refresh BackgroundQuery:=False
        i = i + 1
        DoEvents
    Loop While Err.Number <> 0 And i < 10
        
    
    If Err.Number <> 0 Then
        MsgBox "Не удалось обновить подключение!"
        Exit Sub
    End If
[/vba]
Здесь каждые 5 секунд делается попытка обновить подключение и таких попыток 10.
Так как у меня нет искомого файла-источника, то проверить смогла только на неудачное подключение :(
К сообщению приложен файл: 4476266.xlsb (47.1 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Цитата evgenyforever, 20.09.2023 в 13:49, в сообщении № 1 ()
при появлении этой ошибки запускал бы текущий макрос автоматически

Можно не макрос запускать заново, а обновление включить в цикл. Правда, я бы всё же ограничила кол-во попыток. Например
[vba]
Код
    On Error Resume Next
    Do
        Application.Wait Now + TimeValue("00:00:05")
        Err.Clear
        Worksheets("ЕВРО").Range("A500").QueryTable.Refresh BackgroundQuery:=False
        i = i + 1
        DoEvents
    Loop While Err.Number <> 0 And i < 10
        
    
    If Err.Number <> 0 Then
        MsgBox "Не удалось обновить подключение!"
        Exit Sub
    End If
[/vba]
Здесь каждые 5 секунд делается попытка обновить подключение и таких попыток 10.
Так как у меня нет искомого файла-источника, то проверить смогла только на неудачное подключение :(

Автор - Pelena
Дата добавления - 23.09.2023 в 08:47
evgenyforever Дата: Вторник, 26.09.2023, 21:45 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, "Черт возьми, Холмс! Но как??!!" :)
Елена, Огромное спасибо!! Пока тестирую некоторые время, погляжу на более длительном временном отрезке.

Цитата
Так как у меня нет искомого файла-источника, то проверить смогла только на неудачное подключение

А с источником-файлом, сможете проверить (во вложении)?

Может еще сможете помочь с таким вопросом, можно ли дополнить макрос, чтобы он работал исключительно в оной книге, и чтобы при открытии другой книги он не выдавал ошибку
.
Т.е. чтобы макрос в этой книге работал безпрерывно, а я мог бы параллельно работать в другой книге. Возможно задать такой параметр, что бы макрос относился конкретно к этой книге, например поименно, и при открытии другой книги макрос не пытался обновить внешний источник в другой книге.
К сообщению приложен файл: eurusd1.csv (23.5 Kb)


Сообщение отредактировал evgenyforever - Среда, 27.09.2023, 15:22
 
Ответить
СообщениеPelena, "Черт возьми, Холмс! Но как??!!" :)
Елена, Огромное спасибо!! Пока тестирую некоторые время, погляжу на более длительном временном отрезке.

Цитата
Так как у меня нет искомого файла-источника, то проверить смогла только на неудачное подключение

А с источником-файлом, сможете проверить (во вложении)?

Может еще сможете помочь с таким вопросом, можно ли дополнить макрос, чтобы он работал исключительно в оной книге, и чтобы при открытии другой книги он не выдавал ошибку
.
Т.е. чтобы макрос в этой книге работал безпрерывно, а я мог бы параллельно работать в другой книге. Возможно задать такой параметр, что бы макрос относился конкретно к этой книге, например поименно, и при открытии другой книги макрос не пытался обновить внешний источник в другой книге.

Автор - evgenyforever
Дата добавления - 26.09.2023 в 21:45
evgenyforever Дата: Четверг, 28.09.2023, 16:03 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Цитата evgenyforever, 26.09.2023 в 21:45, в сообщении № 3 ()
Пока тестирую некоторые время, погляжу на более длительном временном отрезке.

Совсем ошибка не ушла, иногда появляется.
 
Ответить
Сообщение
Цитата evgenyforever, 26.09.2023 в 21:45, в сообщении № 3 ()
Пока тестирую некоторые время, погляжу на более длительном временном отрезке.

Совсем ошибка не ушла, иногда появляется.

Автор - evgenyforever
Дата добавления - 28.09.2023 в 16:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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