Ошибка 440 при попытке отсортировать закрытый файл - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь отсортировать закрытый файл 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

Я не мог найти решение этой проблемы.

1 Ответ

0 голосов
/ 15 апреля 2019

Что если вы попробуете это?

With xlBook.Worksheets("X")
    .Sort.SortFields.Add2 Key:=.Range(.Cells(1, 5), .Cells(lastrowX, 5)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End With

Я знаю, @MathieuGuindon готовится дать вам полный и подробный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...