在另一个工作簿中引用单元格。 如果值相同,则使我的查询不刷新

它说我有太less的参数预计15 …这是我刷新前后的东西。

1级

Public WithEvents qt As QueryTable Private Sub qt_AfterRefresh(ByVal Success As Boolean) Application.Worksheets("RawDataLines").Range("A1") = Application.Worksheets("RawDataLines").Range("C1") Application.Run "'Operation Get Ipads.xls'!Assembly1_Button" End Sub 

2级

 Public WithEvents qut As QueryTable Private Sub qut_BeforeRefresh(Cancel As Boolean) Worksheets("RawDataLines").Range("C1") = _ "='H:\Departments\Manufacturing\Production Links\DashBoard Breakdown\[MASTER_LIVE_STATUS_DATA.xls]Sheet1'!R1C1" If Application.Worksheets("RawDataLines").Range("C1") = Application.Worksheets("RawDataLines").Range("A1") Then Cancel = True End If End Sub 

初始化:

 Dim T As New Class1 Dim H As New Class2 Sub Initialize_It() Set T.qt = ThisWorkbook.Sheets(3).QueryTables(1) Set H.qut = ThisWorkbook.Sheets(3).QueryTables(1) End Sub 

 Private Sub qt_BeforeRefresh(ByVal Success As Boolean) 

参数通常是Cancel ,这是你的代码引用。 将其更改为Cancel

您可以参考当前工作簿(此代码正在运行的位置)为ThisWorkbook 。 假设它是主人,那么你可以使用:

 ThisWorkbook.Worksheets("sheet1").Range("A1") 

Workbooks集合仅涉及打开的工作簿,因此您需要暂时打开其他工作簿:

 Dim wbOther As Workbook Set wbOther = Workbooks.Open("full path and filename.xlsx", False) 

False观点表明你不希望在打开图书时Update Links (如果适用)。

当你完成了另一本书,使用:

 wb.Close False 'False says that you do not need to Save Changes Set wb = Nothing 

可以从另一个工作簿中获取单个值,而不打开和closures它,但如果该书也有链接,则可能会导致问题:

 Debug.Print ExecuteExcel4Macro("'F:\Documents and Settings\student\My Documents\[AndysData7.xlsx]Staff List'!R6C4") 

请注意,公式需要使用R1C1表示法。 (而不是Debug.Print你可以将值存储在一个variables中。)还要注意,我不一定会推荐这种方法,因为它没有文档,但是我想我会在问题的上下文中提到它。