Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA刷新单个查询的最佳选项_Excel_Vba - Fatal编程技术网

Excel 使用VBA刷新单个查询的最佳选项

Excel 使用VBA刷新单个查询的最佳选项,excel,vba,Excel,Vba,我有一个带有4-6个查询的workboook,我只想用VBA刷新其中的1个。我的问题是,我是否使用下面最快的选项 不,我不想在Excel中使用“全部刷新/刷新”按钮,我需要将其包含在sub中 代码: 这些不起作用: ActiveWorkbook.Connections("Raw").refresh ThisWorkbook.Connections("Raw").refresh 感谢您提前给出的友好回答。最快的方法应该是按名称刷新特定查询 ThisWorkbook.Connect

我有一个带有4-6个查询的workboook,我只想用VBA刷新其中的1个。我的问题是,我是否使用下面最快的选项

不,我不想在Excel中使用“全部刷新/刷新”按钮,我需要将其包含在sub中

代码:

这些不起作用:

    ActiveWorkbook.Connections("Raw").refresh
    ThisWorkbook.Connections("Raw").refresh

感谢您提前给出的友好回答。

最快的方法应该是按名称刷新特定查询

ThisWorkbook.Connections("YourOLEDBconnection").OLEDBConnection.refresh
这将是一个较小的调用堆栈,但不会有太大的时间差。它还只关注连接打开、刷新和关闭路径

比如:

ThisWorkbook.Worksheets("SheetName").ListObjects("query table name").QueryTable.refresh BackgroundQuery:=False 
我认为会有更长的调用堆栈,对顶部显示的连接刷新进行额外调用。与表本身相关,您可能会产生少量开销(任何重新绘制的格式等)


您可以对各种方法计时,并寻找最佳中值刷新时间,然后采用该方法。

与转到需要刷新的工作表,然后使用VBA代码Selection.ListObject.QueryTable.refresh BackgroundQuery:=False?不一样吗??我的意思是,刷新表将在后台刷新连接,所以只需刷新连接即可。我的意思是ThisWorkbook.Worksheets(“SheetName”).ListObjects(“查询表名称”).QueryTable.refresh BackgroundQuery:=False基本上与Selection.ListObject.QueryTable.refresh BackgroundQuery:=False相同?否。第二个会产生更多的i/o开销,因为您必须首先触摸工作表并选择目标。
ThisWorkbook.Worksheets("SheetName").ListObjects("query table name").QueryTable.refresh BackgroundQuery:=False