Страницы: 1
RSS
Скопировать содержимое листа из одной книги в другую
 
Подскажите, пожалуйста, что добавить в код, чтобы скопировать целиком все данные из одного листа одной книги на лист другой книги, сохранив форматирование. Строк может быть любое количество, столбцов не больше диапазона "A:Z".
На новый лист нужно вставить лист целиком, чтобы все прежние данные затерлись. Своего рода аналог ctrl+a, ctrl+c в копируемом листе,  ctrl+a, ctrl+v на листе куда вставляем.
По коду вроде все копирует, но если старых строк на втором листе больше, старые данные остаются после вставки.
Код
Sub копироватьвставить()

Dim wb1 As Workbook, wb3 As Workbook
Set wb1 = Workbooks("книга1.xlsx")
Set wb3 = Workbooks("книга2.xlsm")

wb1.Sheets("Лист1").Rows("2:2").AutoFilter
wb1.Sheets("Лист1").Range("A:Z").AutoFilter Field:=4, Criteria1:="=", Operator:=xlOr, Criteria2:="заголовок"
wb1.Sheets("Лист1").Range("A:Z").AutoFilter Field:=3, Criteria1:="<>", Operator:=xlOr, Criteria2:="заголовок"
wb1.Sheets("Лист1").Cells.CurrentRegion.Copy
wb3.Sheets("Лист1").Cells.PasteSpecial xlPasteValues
wb3.Sheets("Лист1").Cells.PasteSpecial Paste:=xlPasteFormats
  
End Sub
 
slider85, к чему такие сложности?
Код
    wb3.Sheets("Лист1").delete
    wb1.Sheets("Лист1").Copy wb3.sheets(1)
 
Сложность в том, что необходимо вставить только отфильтрованные данные, а не просто скопировать лист. Дальше планируется фильтрация по другим параметрам и вставка полученного результата на другие листы
 
Насколько я понимаю, надо сначала очистить место, куда хотим вставить, а затем вставлять
Код
wb3.Sheets("Лист1").UsedRange.Clear 'очищаем ячейки листа вставки (очищаем используемый диапазон)
wb1.Sheets("Лист1").Cells.CurrentRegion.Copy wb3.Sheets("Лист1").Range("A1") 'методом Copy с указанием сразу КУДА - копируем вставляем.
Кому решение нужно - тот пример и рисует.
 
Цитата
slider85 написал:
скопировать целиком все данные из одного листа одной книги на лист другой книги
Цитата
slider85 написал:
только отфильтрованные данные
уж определились бы для начала?
Изменено: Апострофф - 16.10.2019 16:47:09
 
Цитата
Пытливый написал:
Насколько я понимаю, надо сначала очистить место, куда хотим вставить, а затем вставлять
Да, то что надо.
А можно добавить сохранение ширины копируемых столбцов?
 
Цитата
slider85 написал:
А можно добавить сохранение ширины копируемых столбцов?
Там не сохранять надо, а устанавливать заново, типа:
Код
wb3.Sheets("Лист1").Columns("A").Width = wb1.Sheets("Лист1").Columns("A").Width'и так по каждому
'либо циклом:
For lngI=1 to wb1.Sheets("Лист1").CurrentRegion.Columns.Count
wb3.Sheets("Лист1").Columns(lngI).Width = wb1.Sheets("Лист1").Columns(lngI).Width
Next lngI
Изменено: Пытливый - 16.10.2019 17:08:20
Кому решение нужно - тот пример и рисует.
 
Спасибо большое!
Изменено: slider85 - 16.10.2019 17:39:34
Страницы: 1
Наверх