使VBA等到SQL查询加载

时间:2014-08-20 17:33:46

标签: sql-server excel vba

我在Excel中遇到问题,我使用SQL导入数据然后编辑其中一些数据然而我遇到的问题是VB代码在SQL数据加载到Excel之前继续运行,导致很多数据中的错误。

这是我导入数据的代码

 sqlstring1 = "SELECT [compnumber],[mapcode],[amount],[reportd],[reportm],[reporty]  FROM [Mergent].[dbo].[Annual]" & _
    "WHERE Compnumber = '" & Sheets("list").Cells(i, 1).Value & "';"
    connstring = _
    "ODBC;Driver=SQL Server;Server=ANDY-PC\SQLEXPRESS;UID=Andy;Trusted_Connection=Yes;Database=Mergent"
    With Sheets("data").QueryTables.Add(Connection:=connstring, Destination:=Sheets("data").Range("a1"), Sql:=sqlstring1)
    .RefreshStyle = xlOverwriteCells
    .Refresh BackgroundQuery = False
    End With

我需要以某种方式让VBA等到它加载。代码循环遍历数千个不同大小的SQL查询,因此可以进行简单的等待10秒'并不是很好,并且会增加大量时间来运行代码。

有没有办法让VBA等到查询完成?

1 个答案:

答案 0 :(得分:0)

您正在后台运行查询。尝试编译代码。

.Refresh BackgroundQuery = False

您有一个未定义的变量BackgroundQuery

他们使用命名参数的方法是使用:=而不是=

尝试

.Refresh BackgroundQuery := False