Excel 在一台机器上运行时错误1004,但在另一台机器上没有

Excel 在一台机器上运行时错误1004,但在另一台机器上没有,excel,vba,Excel,Vba,我对宏不太熟悉,也不明白为什么我在网络上的所有其他机器上都出现运行时错误1004,但在我的机器上却没有?我已经在我的电脑上创建了该文件。 代码如下: Sub CustomerDetailed() ' Dim sheetName As String sheetName = "Sales Customer Detailed Report" ShowSheets (sheetName) Sheets("SageWinman").Range("H2").ListObj

我对宏不太熟悉,也不明白为什么我在网络上的所有其他机器上都出现运行时错误1004,但在我的机器上却没有?我已经在我的电脑上创建了该文件。 代码如下:

Sub CustomerDetailed()
'
    Dim sheetName As String
    sheetName = "Sales Customer Detailed Report"

    ShowSheets (sheetName)

    Sheets("SageWinman").Range("H2").ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Sales Customer Detailed Report").PivotTables("CustomerDetailed").PivotCache.Refresh
    Sheets("Sales Customer Detailed Report").Select
End Sub
它所做的一切——单击按钮打开一个隐藏的工作表,然后刷新数据透视表数据。 调试器指向此通道:

Sheets("SageWinman").Range("H2").ListObject.QueryTable.Refresh BackgroundQuery:=False

此错误通常意味着某些命名范围/单元格不存在

因此,在有问题的行中,如果此工作表不存在,则可以是SheetsAgeWinman元素;如果excel的单元格命名参数设置为数字参考而不是字母,则可以是Range2

检查参考样式模式:工具/选项/常规/R1C1参考样式

或者,若要查找错误,请使用以下内容替换该行:

Sub CustomerDetailed()

    Dim sheetName As String
    Dim thesheet as Worksheet
    Dim r As Range

    sheetName = "Sales Customer Detailed Report"

    ShowSheets (sheetName)

    Set thesheet  = Sheets("SageWinman")
    Set r = thesheet .Range("H2")

    r.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Sales Customer Detailed Report").PivotTables("CustomerDetailed").PivotCache.Refresh
    Sheets("Sales Customer Detailed Report").Select
End Sub
重新运行脚本;如果失败了,你应该更准确地确定在哪里。

我已经找到了原因

您必须为每个用户设置自己的ODBC驱动程序。
-因此,在网络上-确保每个用户都有指向ur DB的ODBC驱动程序,并且在他们的机器上设置了SageWinman表。正如我所提到的-这个宏在我的机器上运行良好,但在其他机器上运行不好…您是否尝试将该行拆分为几个较小的部分以确定错误的精确来源?我明白您的意思。是,它在第行给出错误:r.ListObject.QueryTable.Refresh BackgroundQuery:=False您的操作系统和excel版本是什么?您是否检查了区域设置是否相同?