Не работает запрос на копирование диапазона в новую книгу Файловый журнал

#excel #vba #savefiledialog

Вопрос:

Я пытаюсь скопировать некоторые определенные ячейки в новую книгу, которую мне предлагается создать во время выполнения сценария VBA. Я продолжаю получать объект, который не поддерживает это свойство или метод в wsI.Range(«Y2:AF2882), что не так с моим кодом?

 Option Explicit Sub Export1()   Dim wbI As Workbook, wbO As Workbook  Dim wsI As Worksheet, wsO As Worksheet  Dim Filename As Variant    Set wbI = ThisWorkbook  Set wbO = Workbooks.Add    Filename = Application.GetSaveAsFilename(Filename, "Excelfile (*.xlsx), *.xlsx")    With wbO  Set wsO = wbO.Sheets("Ark1")  Set wsI = wbI.Sheets("SVK stationer")  .SaveAs Filename    wsI.Range("Y2:AF2882") _  .AutoFilter Field:=1, Criteria1:="lt;gt;"  .SpecialCells(xlCellTypeVisible).Copy    wsO.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats)  End With   End Sub  

Комментарии:

1. Там есть пробел wsI .Range("Y2:AF2882") , после wsI , как вы можете видеть (скопировано из вашего кода). Вы скопировали свой код из модуля или написали его от руки? Так и должно быть wsI.Range("Y2:AF2882") _ .

2. В противном случае строка кода не имеет никакого значения. Это следует продолжить в следующей строке кода. В этом и заключается значение символа»_».

3. Я скопировал его, но, по-моему, сначала он был без пробела, но отсутствовал _ . Я добавил это, но теперь я получаю ту же ошибку в .SpecialCells(xlCellTypeVisible).Copy. Может быть, это глупый вопрос, но нужен ли мне _ еще и до этого?

4. И вы проверили его, как я предлагал?

5. Вы откуда-то скопировали код? Я пытаюсь понять, чего не хватает. Код, вероятно , пытается использовать With wsI.Range("Y2:AF2882") (без окончания»_»), за которым следуют две строки, начинающиеся с точки, но End With .SpecialCells(xlCellTypeVisible).Copy , я думаю, он пропускает «после»…

Ответ №1:

Обновленные комментарии

 Option Explicit Sub Export1()   Dim wb As Workbook  Set wb = Workbooks.Add  wb.Sheets(1).Name = "Arki"   With ThisWorkbook.Sheets("SVK stationer").Range("Y2:AF2882")  .AutoFilter Field:=1, Criteria1:="lt;gt;"  .SpecialCells(xlCellTypeVisible).Copy  wb.Sheets(1).Range("A1").PasteSpecial xlPasteValuesAndNumberFormats  wb.SaveAs Application.GetSaveAsFilename("", "Excelfile (*.xlsx), *.xlsx")  'wb.Close False  End With  End Sub