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

时间:2013-07-31 20:16:14

标签: database excel vba

它说我预期的参数太少了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

1 个答案:

答案 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你将值存储在变量中。)另请注意,我不一定推荐这种方法,因为它没有文档记录,但我想在问题的上下文中提到它。