Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Скопировать отфильтрованный лист Excel

Автор PavelAA, 04.03.2013, 15:48

« назад - далее »

PavelAA

Есть книга Excel, с помощью фильтров я выделил необходимые данные, теперь хочу, чтобы скопировались в новую книгу только отфильтрованные данные.
Данный код копирует полностью... без фильтров.
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+q
    On Error Resume Next
    ' название подпапки, в которую по-умолчанию будет предложено сохранить файл
   Const REPORTS_FOLDER = "Акты\"
    ' создаём папку для файла, если её ещё нет
   MkDir ThisWorkbook.Path & "\" & REPORTS_FOLDER
    ' выбираем стартовую папку
   ChDrive Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & REPORTS_FOLDER

    Filename = Application.GetSaveAsFilename("отчёт.xlsx", "Отчёты Excel (*.xlsx*),", , _
                                             "Введите имя файла для сохраняемого отчёта", "Сохранить")
    ' если пользователь отказался от выбора имени файла - отменяем сохранение листа в файл
   If VarType(Filename) = vbBoolean Then Exit Sub

    ' копируем активный лист (при этом создаётся новая книга)
   Err.Clear: ActiveSheet.Copy: DoEvents
    If Err Then Exit Sub    ' произошла какая-то ошибка при попытке копирования листа

    ' убеждаемся, что активной книгой является копия листа
   If ActiveWorkbook.Worksheets.Count = 1 And ActiveWorkbook.Path = "" Then
        ' сохраняем файл под заданным именем в формате Excel 2003
       ActiveWorkbook.SaveAs Filename, xlOpenXMLWorkbook
       
        ' закрываем сохранённый файл
       ' (удалите следующую строку, если закрывать созданный файл не требуется)
       ActiveWorkbook.Close False
    End If
End Sub


kuklp

Ну и правильно. Вы копируете лист со всеми потрохами в новую книгу. Добавляйте новый лист, копируйте в него видимые строки, а уж этот лист копируйте в новую книгу.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

PavelAA


kuklp

Нет, уважаемый! Пример нужен от Вас. Читайте правила форума и отпишитесь, какой из пунктов Вы нарушили.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Wasilic

Цитата: PavelAA от 04.03.2013, 22:51
можно пример :( пожалуйста! :-[
Пример чего? Кода? Как скопировать видимый диапазон на другой лист? Можно так.

Sub Copy()
   Dim iCopi As Range
   Dim iPast As Range
   Set iCopi = Worksheets("Лист1").Range("A1:A1000").SpecialCells(xlVisible)
   Set iPast = Worksheets("Лист2").Range("A1")
   iCopi.Copy iPast
End Sub

Листы и диапазон, естно, свой указать.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

PavelAA