Vba 参数传递到查询后的表刷新,ODBC刷新

Vba 参数传递到查询后的表刷新,ODBC刷新,vba,postgresql,excel,odbc,Vba,Postgresql,Excel,Odbc,我有一个表,它由一个到PostgreSQL数据库的ODBC连接填充。此连接的查询有一个参数,该参数连接到工作表中某个单元格的值。在查询运行并刷新表之后,我想将数据集复制到一个新的工作表中,每次刷新表时都追加新的数据集。问题是,我创建的VBA循环没有暂停足够长的时间,以便在每次递增参数时刷新表。我尝试在脚本中刷新连接,然后使用“doevents”让Excel跟上进度。不起作用。发生的情况是,VBA运行第一个查询,然后简单地复制结果数据集,复制次数必须满足循环的要求。它不会在这段时间内每次刷新数据。

我有一个表,它由一个到PostgreSQL数据库的ODBC连接填充。此连接的查询有一个参数,该参数连接到工作表中某个单元格的值。在查询运行并刷新表之后,我想将数据集复制到一个新的工作表中,每次刷新表时都追加新的数据集。问题是,我创建的VBA循环没有暂停足够长的时间,以便在每次递增参数时刷新表。我尝试在脚本中刷新连接,然后使用“doevents”让Excel跟上进度。不起作用。发生的情况是,VBA运行第一个查询,然后简单地复制结果数据集,复制次数必须满足循环的要求。它不会在这段时间内每次刷新数据。因此,我得到了一个工作表,第一次重复复制了5到6次数据,以此类推

这是我的剧本:

   Sub auto_increment()

   Dim i As Integer
   Dim d As Integer
   Dim wb As Workbook
   Dim r As Integer

   Set wb = Application.Workbooks("Competitiveness Summary_any date")
   d = wb.Sheets("data").Range("AS2").Value

   With wb
        For i = 1 To d
        .Sheets("data").Range("AQ4").Formula = "=workday(AQ2," & i & ",Holidays!D1:D8)"
        .Worksheets("data").Select
        ThisWorkbook.Connections("query from Tigris_fulfillment5").Refresh
         DoEvents

   r = .Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1
       .Sheets("data").Range("Table_ExternalData_1").Copy
       .Sheets("Sheet2").Select
       .Sheets("Sheet2").Range("A" & r).Select
       ActiveSheet.Paste

   Next i

   End With

   End Sub
变量“d”表示两个日期之间的工作日数。我想用工作日数增加参数单元格。总之,我试图创建一个平面文件,其中包含两个日期之间发生的旧数据。目前的查询设计为一次只返回一天的数据

非常感谢您的帮助。

关闭“连接属性”选项卡上的“启用后台刷新”,然后删除
DoEvents

您希望在查询运行时不使用Excel。您希望Excel“停止”直到查询完成,以便在执行
刷新时,您的代码等待