2014-10-30 70 views
1

我有一个由ODBC连接到PostgreSQL数据库的表填充。此连接的查询具有一个连接到工作表中单元格值的参数。查询运行并刷新表后,我想将数据集复制到新的工作表中,每次刷新表时都会附加新的数据集。问题是,我创建的VBA循环不会暂停足够长的时间,以便每次增加参数时刷新表。我已经尝试刷新脚本中的连接,然后使用'doevents'让Excel跟上。不起作用。会发生什么是VBA运行第一个查询,然后简单地复制结果数据集所需的次数以满足循环。它不会每次刷新数据。因此,我得到复制5或6倍的数据的第一次迭代工作表等参数传递到查询后,表刷新,ODBC刷新

这里是我的脚本:

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”代表的工作日两个日期之间的数字。我想按工作日数递增我的参数单元格。总而言之,我试图创建一个在两个日期之间发生的旧数据的平面文件。目前的查询只设计为一次返回一天的数据。

任何援助将不胜感激。

回答