gpt4 book ai didi

vba - 参数传递给查询后表刷新,ODBC 刷新

转载 作者:行者123 更新时间:2023-11-29 13:29:47 25 4
gpt4 key购买 nike

我有一个表,该表由与 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 行。

Select this check box to run the query in the background. Clear this check box to run the query while you wait. Running a query in the background enables you to use Excel while the query runs.

您希望在查询运行时使用 Excel。您希望 Excel 在查询完成之前“停止”,这样当您执行 Refresh 时,您的代码会等待。

关于vba - 参数传递给查询后表刷新,ODBC 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26657743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com