Почему у меня возникает ошибка при попытке открыть второй файл Excel? - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу открыть и работать с двумя рабочими книгами, но у меня все еще есть ошибка «Ошибка времени выполнения» 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```

1 Ответ

2 голосов
/ 27 апреля 2020
Wbook1.ark2.Select

ark2 - это переменная рабочего листа - это не свойство или метод Wbook1.

Просто ark2.Select будет работать нормально, но, как правило, нет необходимости активировать / выбирать что-либо при работе с Excel в VBA.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...