0

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

1 回答 1

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

于 2013-07-31T20:32:35.500 回答