它说我预期的参数太少了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
答案 0 :(得分:2)
Private Sub qt_BeforeRefresh(ByVal Success As Boolean)
参数通常为Cancel
,这就是您的代码所指的内容。将其更改为Cancel
。
您可以将当前工作簿(此代码运行的位置)称为ThisWorkbook
。假设它是MASTER,那么你可以使用:
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
可以从另一个工作簿中获取单个值而无需打开和关闭它,但如果该书也有链接,则可能会导致问题:
Debug.Print ExecuteExcel4Macro("'F:\Documents and Settings\student\My Documents\[AndysData7.xlsx]Staff List'!R6C4")
注意,公式需要使用R1C1表示法。 (而不是Debug.Print
你将值存储在变量中。)另请注意,我不一定推荐这种方法,因为它没有文档记录,但我想在问题的上下文中提到它。