Помогите с макросом, который отвяжет сводную таблицу от источника данных с сохранением исходного форматирования сводной таблицы. Прилагаю пример. В рабочем файле сводная таблица может быть любых размеров.
Добрый день, коллеги!
Помогите с макросом, который отвяжет сводную таблицу от источника данных с сохранением исходного форматирования сводной таблицы. Прилагаю пример. В рабочем файле сводная таблица может быть любых размеров.Мурад
Sub qqq() Range("A3:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy With Range("E3") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats End With 'Columns("E:F").Delete Shift:=xlToLeft End Sub
[/vba]
[vba]
Код
Sub qqq() Range("A3:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy With Range("E3") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats End With 'Columns("E:F").Delete Shift:=xlToLeft End Sub
_Igor_61, спасибо, что ответили. Не пойму, зачем вы выбрали диапазон E3. Рабочая сводная таблица в ширину до 20 столбцов, в высоту - до 100 строк. Попробую из вашего макроса выделить диапазон всего листа и сохранить значения. Но если все эти операции (значения, ширина, форматы) делать через Специальную вставку, форматирование сводной таблицы не сохраняется, к сожалению. И плюс не забывайте про заголовок таблицы. Если его включить в макрос через
_Igor_61, спасибо, что ответили. Не пойму, зачем вы выбрали диапазон E3. Рабочая сводная таблица в ширину до 20 столбцов, в высоту - до 100 строк. Попробую из вашего макроса выделить диапазон всего листа и сохранить значения. Но если все эти операции (значения, ширина, форматы) делать через Специальную вставку, форматирование сводной таблицы не сохраняется, к сожалению. И плюс не забывайте про заголовок таблицы. Если его включить в макрос через
_Igor_61, доработал ваш макрос для конкретного примера:
[vba]
Код
Sub qqq() Range("A3:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy With Range("E3") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats End With 'Columns("E:F").Delete Shift:=xlToLeft Range("A1:B1").Copy With Range("E1") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteFormats End With Columns("A:D").Delete End Sub
[/vba]
_Igor_61, доработал ваш макрос для конкретного примера:
[vba]
Код
Sub qqq() Range("A3:B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy With Range("E3") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteFormats End With 'Columns("E:F").Delete Shift:=xlToLeft Range("A1:B1").Copy With Range("E1") .Select .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteFormats End With Columns("A:D").Delete End Sub
Sub www() Set sh = ActiveSheet Sheets.Add With ActiveSheet sh.Range("A3").CurrentRegion.Rows(1).Copy .Paste sh.Range("A3").CurrentRegion.Offset(1).Resize(sh.Range("A3").CurrentRegion.Rows.Count - 1).Copy .Range("A2").Select .Paste End With End Sub
[/vba]
Может, так подойдёт [vba]
Код
Sub www() Set sh = ActiveSheet Sheets.Add With ActiveSheet sh.Range("A3").CurrentRegion.Rows(1).Copy .Paste sh.Range("A3").CurrentRegion.Offset(1).Resize(sh.Range("A3").CurrentRegion.Rows.Count - 1).Copy .Range("A2").Select .Paste End With End Sub
Pelena, спасибо! Но, опять же, форматирование сохраняется, если копировать сводную таблицу без текстового заголовка "Сводная таблица". Я так понял, текстовое поле и сводная таблица это 2 разных типа объекта, их надо переносить последовательно. При параллельном копировании форматирование слетает.
Pelena, спасибо! Но, опять же, форматирование сохраняется, если копировать сводную таблицу без текстового заголовка "Сводная таблица". Я так понял, текстовое поле и сводная таблица это 2 разных типа объекта, их надо переносить последовательно. При параллельном копировании форматирование слетает.Мурад