У меня есть рабочая книга Excel, содержащая ~ 100 таблиц соединений SQL, которые находятся на отдельных листах и обновляются каждую неделю. Мой текущий код представляет собой циклический макрос (ниже), который проходит через каждый лист и обновляет каждую таблицу.
Sub RefreshLoop()
Dim wks As Worksheet
Dim qt As QueryTable
Dim lo As ListObject
For Each wks In ActiveWorkbook.Worksheets
For Each lo In wks.ListObjects
If lo.SourceType = 3 Then
With lo.QueryTable
.BackgroundQuery = False
.Refresh
End With
End If
Next lo
For Each qt In wks.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
Next wks
Set qt = Nothing
Set wks = Nothing
End Sub
Что я пытаюсь сделать, так это после обновления таблицы добавить новую строку в конец каждой таблицы, содержащую текущую дату в первом столбце. Я попытался использовать приведенное ниже, а затем вызвать это в цикле, но я получаю всевозможные ошибки, которые я не совсем понимаю. Каждая таблица состоит из одинакового количества столбцов, но с различными строками в зависимости от изменения параметра.
Dim newrow As ListRow
Set newrow = lo.ListRows.Add(AlwaysInsert:=True)
With newrow
.Range(1) = Date
End With
Пример ошибки;
Run-time error '91':
Object variable or With block variable not set
Я изо всех сил пытаюсь понять, что мне нужно делать с помощью Excel 2019
Tbl
не определено. Вы используетеlo
для своих объектов списка. - person BigBen   schedule 03.02.2020newrow
в вашем основном блоке кода? - person BigBen   schedule 03.02.2020