我在通过宏执行SQL查询时遇到了问题,而在excel 2010中单击“刷新”就没有问题。
设置:
问题出在这里:
如果我右键单击表格并从右键单击弹出菜单中选择“刷新”,则数据将刷新,并且在屏幕底部显示“正在运行背景查询...”的小旋转地球将出现并旋转直到该查询已运行完毕,Excel将不会冻结,我可以在其他选项卡或其他工作表中工作。
但是,如果我通过宏执行该确切语句:
Range("A6").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Run Code Online (Sandbox Code Playgroud)
旋转的球没有出现,excel停止响应,有时变成白色,并且将鼠标悬停在excel上时,鼠标变成了旋转的“无响应”圆圈。此时,在查询完成执行并且excel开始再次响应之前,我根本无法使用excel。
这是一个问题,因为对于我的大多数报告,我都使用excel中的单元格来允许用户将参数插入到我执行的SQL语句中。
例:
Dim oQuery As QueryTable
Dim oDate As String
Set oQuery = ActiveWorkbook.Sheets("Sheet1").ListObjects(1).QueryTable
oDate = Range("B1")
oQuery.CommandText = "exec database.dbo.ExampleProcedure @SuppliedDate = '" + oDate + "'"
oQuery.Refresh False
Run Code Online (Sandbox Code Playgroud)
在Excel 2003中这不是问题,但仅在我切换到2010并不得不更改查询表vb代码时出现,如下例所示
在2003年:
Set oQuery = Sheet1.QueryTables(1)
Run Code Online (Sandbox Code Playgroud)
在2010年:
Set oQuery = ActiveWorkbook.Sheets("Sheet1").ListObjects(1).QueryTable
Run Code Online (Sandbox Code Playgroud)
同样,它仅发生在我编写的报告的大约75%上,并且仅在SQL语句花费几秒钟的刷新时间时才是一个明显的问题。这已经成为一个很大的问题,因此,我非常感谢任何可以提供帮助的人。非常感谢。