通过parameter passing查询后,表刷新,ODBC刷新

我有一个由ODBC连接到PostgreSQL数据库的表。 此连接的查询具有连接到工作表中单元格的值的参数。 在查询运行并刷新表之后,我想将数据集复制到新的工作表中,每当表刷新时附加新的数据集。 问题是我创build的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 

variables“d”代表两个date之间的营业日数。 我想增加我的参数单元的工作日数。 总而言之,我试图创build两个date之间发生的旧数据的平面文件。 目前的查询只devise为每天返回一天的数据。

任何援助将不胜感激。

在连接属性选项卡上closures“启用后台刷新”,并删除DoEvents行。

选中此checkbox可在后台运行查询。 清除此checkbox以在等待时运行查询。 在后台运行查询使您能够在查询运行时使用Excel。

查询运行时,您不想使用Excel。 您希望Excel在查询完成之前“停止”,以便在执行Refresh代码等待。