为什么我在尝试打开第二个excel文件时出错?

为什么我在尝试打开第二个excel文件时出错?,excel,vba,Excel,Vba,我想打开并处理这两个工作簿,但仍有一个错误“运行时错误”9“ 我哪里出错了? 我编写了这段代码,当我设置Wbook1和Wbook2时,我遇到了一个问题 Sub List() Dim Wbook1 As Workbook, Wbook2 As Workbook Dim strWbook1 As String, strWbook2 As String strWbook1 = "C:\CW3_test.xls" strWbook2 = "C:\CW3 Document register.xls"

我想打开并处理这两个工作簿,但仍有一个错误“运行时错误”9“ 我哪里出错了? 我编写了这段代码,当我设置Wbook1和Wbook2时,我遇到了一个问题

Sub List()
Dim Wbook1 As Workbook, Wbook2 As Workbook
Dim strWbook1 As String, strWbook2 As String

strWbook1 = "C:\CW3_test.xls" 
strWbook2 = "C:\CW3 Document register.xls" 

Set Wbook1 = Workbooks(strWbook1)
Set Wbook2 = Workbooks.Open(strWbook2)

Dim ark1 As Worksheet, ark2 As Worksheet
Set ark1 = Wbook1.Worksheets("Arkusz1")
Set ark2 = Wbook1.Worksheets("MAN")
Dim NextRow As Long
Dim LastRow As Long, lastRow2 As Long
Dim StartTime As Double

StartTime = Timer

Wbook1.ark2.Select
Wbook1.ark2.Cells.Select
Selection.ClearContents

LastRow = Wbook1.ark1.Cells(Rows.Count, 2).End(xlUp).Row

Wbook2.Active
ActiveWorkbook.Close savechanges:=False

 MsgBox "Time:" & Format((Timer - StartTime) / 86400, "hh:mm:ss") 
End Sub```
ark2
是一个工作表变量-它不是Wbook1的属性或方法

只要
ark2。选择
就可以了,但是在VBA中使用Excel时,通常不需要激活/选择任何内容

Sub List()

    Dim Wbook1 As Workbook, Wbook2 As Workbook
    Dim strWbook1 As String, strWbook2 As String

    strWbook1 = "C:\CW3_test.xls" 
    strWbook2 = "C:\CW3 Document register.xls" 

    Set Wbook1 = Workbooks(strWbook1)
    Set Wbook2 = Workbooks.Open(strWbook2)

    Dim ark1 As Worksheet, ark2 As Worksheet
    Set ark1 = Wbook1.Worksheets("Arkusz1")
    Set ark2 = Wbook1.Worksheets("MAN")

    Dim NextRow As Long
    Dim LastRow As Long, lastRow2 As Long
    Dim StartTime As Double

    StartTime = Timer

    ark2.Cells.ClearContents  'no need to activate/select

    LastRow = ark1.Cells(ark1.Rows.Count, 2).End(xlUp).Row

    Wbook2.Close savechanges:=False 'no need to activate/select

    MsgBox "Time:" & Format((Timer - StartTime) / 86400, "hh:mm:ss") 

End Sub
ark2
是一个工作表变量-它不是Wbook1的属性或方法

只要
ark2。选择
就可以了,但是在VBA中使用Excel时,通常不需要激活/选择任何内容

Sub List()

    Dim Wbook1 As Workbook, Wbook2 As Workbook
    Dim strWbook1 As String, strWbook2 As String

    strWbook1 = "C:\CW3_test.xls" 
    strWbook2 = "C:\CW3 Document register.xls" 

    Set Wbook1 = Workbooks(strWbook1)
    Set Wbook2 = Workbooks.Open(strWbook2)

    Dim ark1 As Worksheet, ark2 As Worksheet
    Set ark1 = Wbook1.Worksheets("Arkusz1")
    Set ark2 = Wbook1.Worksheets("MAN")

    Dim NextRow As Long
    Dim LastRow As Long, lastRow2 As Long
    Dim StartTime As Double

    StartTime = Timer

    ark2.Cells.ClearContents  'no need to activate/select

    LastRow = ark1.Cells(ark1.Rows.Count, 2).End(xlUp).Row

    Wbook2.Close savechanges:=False 'no need to activate/select

    MsgBox "Time:" & Format((Timer - StartTime) / 86400, "hh:mm:ss") 

End Sub

Wbook1
是否已打开,或者是否需要打开它?它已打开尝试
设置Wbook1=工作簿(“CW3\U测试”)
。是,这正在工作。但是我有错误438的问题如果你有一个需要帮助的错误,提到哪一行有错误总是很有用的,包括错误的文本(不仅仅是错误号)。这样,我们就不必记住所有这些数字的含义是什么,它已经打开了,或者您需要打开它吗?它已经打开了,请尝试设置Wbook1=工作簿(“CW3_测试”)
。是的,这是有效的。但是我有错误438的问题如果你有一个需要帮助的错误,提到哪一行有错误总是很有用的,包括错误的文本(不仅仅是错误号)。这样我们就不必记住所有这些数字的含义。如果您有一个错误需要帮助,那么提及哪一行有错误,并包括错误文本(不仅仅是错误号)总是很有用的。这样,我们就不必记住所有这些数字的含义。如果您有一个错误需要帮助,那么提及哪一行有错误,并包括错误文本(不仅仅是错误号)总是很有用的。这样我们就不必记住所有这些数字意味着什么。