EmptyParam, // CategoryLocal: OleVariant;

EmptyParam, // RefersToR1C1: OleVariant;

EmptyParam // RefersToR1C1Local: OleVariant

); ASheet.Range['DataRange', EmptyParam].Borders[xlEdgeBottom].LineStyle := xlContinuous; ASheet.Range['DataRange', EmptyParam].Borders[xlEdgeBottom].Weight := xlHairline; // КОНЕЦ ШАБЛОНА

// Начало работы с шаблоном

// Добавим 4 строки для занесения данных (итого уже 5 строк для данных)

// Неудобство при использовании Cells в Range - обязательное

// дублирование Cells во втором параметре

ASheet.Range[ ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row + 1, 1], ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row + 4, 1] ].EntireRow.Insert(xlShiftDown, EmptyParam);

// теперь заполним область форматированием, захватив (ОБЯЗАТЕЛЬНО)

// и область-шаблон "DataRange"

ASheet.Range['DataRange', EmptyParam].AutoFill( ASheet.Range[ // захватим область источника

ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row, 1], ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row + 5, ASheet.Range['DataRange', EmptyParam].Columns.Count] ], xlFillCopy );

// заносим данные из массива (номер и имя) - 5 строк, 2 столбца

arrData := VarArrayCreate([1, 5, 1, 2], varVariant); for i := 1 to 5 do begin

arrData[i, 1] := i; arrData[i, 2] := Format('Имя %d', [i]); end; ASheet.Range[ ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row, 1], ASheet.Cells.Item[ASheet.Range['DataRange', EmptyParam].Row + 5, 2] ].Formula := arrData;

AutoFill Method

How to: Copy Data and Formatting across Worksheets