Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA将新行添加到循环内的查询表中_Excel_Vba_Loops_Listobject - Fatal编程技术网

Excel VBA将新行添加到循环内的查询表中

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

我有一个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还没有定义。您正在对您的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