#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