use strict; use warnings; use Win32::OLE; my $xl = Win32::OLE->new('Excel.Application'); $xl->{Visible} = 1; my $wb = $xl->Workbooks->Add; my $sht = $wb->Sheets(1); my $rngFrom = $sht->Range("A1:A9")->EntireRow; my $cellCount = $rngFrom->Cells->Count; for (1..100) { my $cellNo = int(rand($cellCount))+1; $rngFrom->Cells($cellNo)->{Value} = rand; } my $rngToTopLeft = "A39"; my $rngIns = $sht->Range($rngToTopLeft . ":" . $sht->Cells($sht->Range($rngToTopLeft)->Row + $rngFrom->Rows->Count -1, $sht->Range($rngToTopLeft)->Column)->Address); $rngIns->EntireRow->Insert; $rngFrom->Copy($sht->Range($rngToTopLeft));