Я пытаюсь отсортировать закрытый файл Excel с помощью vba и скопировать данные из закрытого файла.
xlBook.Worksheets("X").Sort.SortFields.Add2 Key:=Range(Cells(1, 5), Cells(lastrowX, 5)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
Ошибка появляется в приведенном выше коде. И весь код любимый
Sub Sort()
Dim xlApp As Application
Dim xlBook As Workbook
Dim Sh As Object
Dim counter As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\DELL\Desktop\baaa.xlsx")
lastrowX = xlBook.Sheets("X").Cells(xlBook.Sheets("X").Rows.Count, "B").End(xlUp).Row
''lastrowW = xlBook.Sheets("W").Cells(xlBook.Sheets("W").Rows.Count, "B").End(xlUp).Row
counter = 0
xlBook.Worksheets("X").Sort.SortFields.Clear
xlBook.Worksheets("X").Sort.SortFields.Add2 Key:=Range(Cells(1, 5), Cells(lastrowX, 5)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With xlBook.Worksheets("X").Sort
.SetRange Range(Cells(1, 5), Cells(lastrowX, 5))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For i = 1 To lastrowX
Value = xlBook.Sheets("X").Cells(i, 5)
If Value = 1 Then
counter = counter + 1
Else
Exit For
End If
Next i
Range(Cells(1, 1), Cells(4, counter)).Select
xlBook.Sheets("X").Range(Cells(1, 1), Cells(counter, 5)).Copy
xlApp.DisplayAlerts = False
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
Set xlBook = ActiveWorkbook
Set Sh = xlBook.Sheets("Sheet1")
Sh.Activate
Range("B1").Select
Sh.Paste
Range("A1").Select
End Sub
Я не мог найти решение этой проблемы.