Excel VBA将新行添加到循环内的查询表中
我有一个excel工作簿,里面有大约100个SQL连接表,它们放在单独的工作表上,每周都会刷新。我当前的代码是一个循环宏(如下),它遍历每个工作表并刷新每个表Excel VBA将新行添加到循环内的查询表中,excel,vba,loops,listobject,Excel,Vba,Loops,Listobject,我有一个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 I
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还没有定义。您正在对您的listobjects使用
lo
。您能分享您面临的错误的快照吗。@salsinga我添加了一个弹出的主要错误示例up@BigBen是的,很抱歉这是我的错误,我仍在调出错误newrow
代码块在哪里属于您的主代码块?
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
If lo.ListRows.Count = 0 Then
lo.ListRows.Add.Range(1) = "No instances of this read code."
End If
lo.ListRows.Add.Range(1) = Date
Next lo
For Each qt In wks.QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
Next wks
Set qt = Nothing
Set wks = Nothing
End Sub