Страницы: 1
RSS
Копирование с сохранением форматирования средствами VBA
 
Здравствуйте.  
Исходные: Есть файл xls с таблицей, имеющей сложную структуру.    
Задача: Перенести средствами vba (не excel)диапазон ячеек в новый документ с сохранением структуры таблицы. (Новый документ подразумевает новая книга).  
В Excel есть функция специальной вставки, которая переносит только формат таблицы (ширины столбцов), можно ли средствами vba реализовать также?
 
Команда Copy скопирует всё (и форматы). Если при Спец. вставке использовать нужные опции поочередно - можно добиться такого же результата.
 
{quote}{login=Юрий М}{date=22.07.2009 04:03}{thema=}{post}Команда Copy скопирует всё (и форматы). Если при Спец. вставке использовать нужные опции поочередно - можно добиться такого же результата.{/post}{/quote}  
 
Команда Copy не копирует ширину солбцов, пока решил следующим образом  
 
Workbooks.Open Filename:="temp.xls"             //открытие файла  
Workbooks("temp.xls").Worksheets("tl").Activate // перенос фокуса    
Workbooks("temp.xls").Worksheets("tl").Range("A1:AO18").Select    
Selection.Copy  
Workbooks("templ.xls").Worksheets("tl").Activate  
Workbooks("templ.xls").Worksheets("tl").Range("A1:AO18").Select  
Selection.PasteSpecial Paste:=xlPasteColumnWidths // перенос ширины столбцов  
Workbooks("temp.xls").Worksheets("tl").Range("A1:AO18").Copy Workbooks("templ.xls").Worksheets("tl").Range("A1:AO18") //копирование диапазона
 
А так?  
Sheets("Лист1").Range("B2").Copy  
Sheets("Лист2").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=22.07.2009 04:18}{thema=}{post}А так?  
Sheets("Лист1").Range("B2").Copy  
Sheets("Лист2").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths{/post}{/quote}  
 
Спасибо, код оптимизируется))Но опять таки, сначала как сверху, копируем только ширину столбцов, а потом все равно надо копировать значения с форматированием.  
 
Workbooks.Open Filename:="temp.xls"  
Workbooks("temp.xls").Worksheets("tl").Range(z).Copy  
Workbooks("templ.xls").Worksheets("tl").Range(z).PasteSpecial Paste:=xlPasteColumnWidths  
Workbooks("temp.xls").Worksheets("tl").Range(z).Copy Workbooks("templ.xls").Worksheets("tl").Range(z)  
 
Кстати попутно - баг с цветами)) когда вручную переносишь таблицу, то изменяются цвета полей)) был зеленый, стал фиолетовый((= почему? не напрягает, но все же))
Страницы: 1
Читают тему
Наверх