use strict; use warnings; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; $Win32::OLE::Warn = 3; # die on errors... my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); # get already active Excel # application or open new my $Book = $Excel->Workbooks->Open('C:\Documents and Settings\velusamyr\My Documents\tes.xls'); # open Excel file my $Sheet = $Book->Worksheets(1); # select worksheet number 1 my $lastrow = $Sheet->UsedRange->Find({What=>"*", SearchDirection=>xlPrevious, SearchOrder=>xlByRows})->{Row}; $Sheet->Cells(1, 3)->{Value} = "Address"; for (2..$lastrow) { $Sheet->Cells($_, 3)->{Value} = $Sheet->Hyperlinks($_ - 1)->Address; } $Book->Save(); __END__ Name Email Address Lee1 Yes mailto:Lee@somewhere.com1 Lee2 Yes mailto:Lee@somewhere.com2 Lee3 Yes mailto:Lee@somewhere.com3 Lee4 Yes mailto:Lee@somewhere.com4 Lee5 Yes mailto:Lee@somewhere.com5 Lee6 Yes mailto:Lee@somewhere.com6