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。それがマスターのものであると仮定すると、次を使用できます。

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 に答える