【问题标题】:Make VBA wait until SQL query loaded让 VBA 等到加载 SQL 查询
【发布时间】:2014-10-14 04:26:23
【问题描述】:

我在 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 等到查询完成?

【问题讨论】:

    标签: sql-server excel vba


    【解决方案1】:

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

    .Refresh BackgroundQuery = False
    

    您有一个未定义的变量BackgroundQuery

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

    试试

    .Refresh BackgroundQuery := False
    

    【讨论】:

    • 啊,谢谢,这似乎使它起作用了。我从网上复制了代码,所以没有意识到 := 是个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多