Страницы: 1
RSS
Копирование отфильтрованного диапазона в новый лист новой книги
 
доброго дня всем !
макрос копирует данные таблицы из исходной таблицы - далее создается папка в директории файла и новый файл куда копируются значения и формат исходной таблицы
только незадача - просто значения копирутся нормально, а вот отфильтрованные значения в исходной таблице не копируются к сожалению
Что поправить в макросе ?
Код
Sub Copy()
Application.ScreenUpdating = False 'чтоб не моргало выключаем скрин
Application.DisplayAlerts = False

Call Создать_папку_ДАТА 'создаем папку ДАТА в корне файла

Dim strFileName As String 'имя файла который создаем Дата_27.02.2017_20.35.xls
strFileName = ThisWorkbook.Path & "\ДАТА\Дата_" & Format(Date, "dd.mm.yyyy") & "_" & Format(Time, "HH.mm") & ".xls"

Call КопированиеДанных 'копируем таблицу с отфильтрованными значениями
ActiveWorkbook.SaveAs strFileName

Application.CutCopyMode = False

Application.DisplayAlerts = True
Application.ScreenUpdating = True 'включаем скрин
End Sub

Sub КопированиеДанных()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Результаты_копирования" 'обзываем лист новой книги
    ThisWorkbook.ActiveSheet.Range("A1:G500").Copy 'диапазон копирования
    ActiveSheet.[A1].PasteSpecial
    ActiveSheet.[A1].PasteSpecial xlPasteValues 'копируем значения
    ActiveSheet.[A1].PasteSpecial xlPasteFormats 'копируем формат
    ActiveSheet.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
    ActiveSheet.Rows("1:500").EntireRow.AutoFit 'выравнивание высоты строки
End Sub

Sub Создать_папку_ДАТА()
    On Error Resume Next
    Const folder$ = "ДАТА" ' название основной папки
    MkDir ThisWorkbook.Path & "\" & folder$ ' создаём папку в директории, если её ещё нет
 End Sub

 
Копируйте только видимые - specialcells(12).
Я сам - дурнее всякого примера! ...
 
только бы еще знать как  specialcells(12)  в код поставить
 
пробую так  не получается

Код
Sub КопированиеДанных()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Результаты_копирования" 'обзываем лист новой книги

Workbooks("Книга1").Worksheets("Данные").Range("A1:G500").SpecialCells(12).Copy Sheets("Результаты_копирования").[A1]

    ThisWorkbook.ActiveSheet.Range("A1:G500").Copy 'диапазон копирования
    ActiveSheet.[A1].PasteSpecial xlPasteValues 'копируем значения
    ActiveSheet.[A1].PasteSpecial xlPasteFormats 'копируем формат
    ActiveSheet.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
    ActiveSheet.Rows("1:500").EntireRow.AutoFit 'выравнивание высоты строки
End Sub
 
Если вы скопировали видимые, то зачем тогда строка
Код
ThisWorkbook.ActiveSheet.Range("A1:G500").Copy 'диапазон копирования
 
Убрал сорри но все равно ошибка идет на строке
Workbooks("Книга1").Worksheets("Данные").Range("A1:G500").SpecialCells(12).Copy Sheets("Результаты_копирования").[A1]

Код
Sub КопированиеДанных()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Результаты_копирования" 'обзываем лист новой книги
 
Workbooks("Книга1").Worksheets("Данные").Range("A1:G500").SpecialCells(12).Copy Sheets("Результаты_копирования").[A1]
 
    ActiveSheet.[A1].PasteSpecial xlPasteValues 'копируем значения
    ActiveSheet.[A1].PasteSpecial xlPasteFormats 'копируем формат
    ActiveSheet.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
    ActiveSheet.Rows("1:500").EntireRow.AutoFit 'выравнивание высоты строки
End Sub
 
При копировании сначала вставляем ширину столбцов, затем все остальное
Код
    ThisWorkbook.ActiveSheet.Range("A1:G500").SpecialCells(12).Copy
    'ThisWorkbook.ActiveSheet.Range("A1:G500").Copy 'диапазон копирования
    'ActiveSheet.[A1].PasteSpecial
    ActiveSheet.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
    ActiveSheet.[A1].PasteSpecial xlPasteValues 'копируем значения
    ActiveSheet.[A1].PasteSpecial xlPasteFormats 'копируем формат
    ActiveSheet.Rows("1:500").EntireRow.AutoFit 'выравнивание высоты строки
 
Kuzmich спасибо за совет - все пошло как надо !
Страницы: 1
Наверх