Как скопировать область, чтобы сохранились размеры строк/столбцов?
К сожалению, при копировании не сохраняются размеры строк и столбцов. Для сохранения размеров строк и столбцов можно использовать несколько способов:
Delphi:
// способ первый - использование метода PasteSpecial
// скопируем область ячеек в буфер обмена
R.Copy(EmptyParam); // поместим в БО
// вставим в "C3" - ширина колонки не изменилась
ASheet.Paste(ASheet.Range['C5', EmptyParam], EmptyParam, lcid); // специальная свтавка с XlPasteType = xlPasteColumnWidths
ASheet.Range['C5', EmptyParam].PasteSpecial(xlPasteColumnWidths, xlPasteSpecialOperationNone, False, False);
// второй способ - обращение к коллекциям Rows и Columns
// копируем весь/все столбец(ы)
R.EntireColumn.Copy(EmptyParam); // поместим в БО
// обязательно должна быть указана первая строка!
ASheet.Paste(ASheet.Range['E1', EmptyParam], EmptyParam, lcid);
// третий способ - "копирование" свойства ColumnWidth
R.Copy(ASheet.Range['G4', EmptyParam]); // Просто "копируем" ширину столбца
ASheet.Range['G4', EmptyParam].ColumnWidth := R.ColumnWidth;
Copy Method
PasteSpecial Method