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
VBA-刷新工作簿中以外的所有表_Vba - Fatal编程技术网

VBA-刷新工作簿中以外的所有表

VBA-刷新工作簿中以外的所有表,vba,Vba,我有一个带有源表(在a表中)和电源查询表(在C表和D表中)的工作簿。使用ActiveWorkbook.RefreshAll的问题在于,每当我通过复制/粘贴替换源数据时,该表也会被刷新,并且新数据会丢失。假设我有4个工作表(A、B、C、D),只想更新C&D中的表。以下是我尝试实现但不起作用的内容: Sub Macro() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <>

我有一个带有源表(在a表中)和电源查询表(在C表和D表中)的工作簿。使用ActiveWorkbook.RefreshAll的问题在于,每当我通过复制/粘贴替换源数据时,该表也会被刷新,并且新数据会丢失。假设我有4个工作表(A、B、C、D),只想更新C&D中的表。以下是我尝试实现但不起作用的内容:

Sub Macro()
   Dim ws As Worksheet
   For Each ws In ThisWorkbook.Worksheets
      If ws.Name <> "A" Or "B" Then
      Range("A1").Select
      Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
      End If
   Next ws
End Sub
Sub宏()
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name为“A”或“B”,那么
范围(“A1”)。选择
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
如果结束
下一个ws
端接头
或者,如果有一种方法可以只刷新工作簿中的power查询表,也可以使用。

尝试以下方法:

Sub宏()
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name“A”和ws.Name“B”,那么
ws.Range(“a1”).ListObject.QueryTable.Refresh BackgroundQuery:=False
如果结束
下一个ws
端接头

如果ws.Name“A”和ws.Name“B”,那么我会得到一个表达式错误-“我们找不到名为“table\u query\u 57345”的Excel表。更新:哦,忘了我刚刚更改了源表的名称。我将查看您的解决方案现在是否有效。Excel在连接属性下有一个选项,允许您禁用“RefreshAll”“对于该表,所以只需这样做,并将RefreshAll保留在我的代码中。谢谢你的帮助!