Sub Macro1() ' Right-click a cell Range("C10").Select ' From the context menu, click "Hyperlink...", and in there fill in the dialog ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ "http://blah.example.com", TextToDisplay:="foo" Range("C10").Select ' Right-click cell again, do "Edit Hyperlink..." and s/foo/bar/ Selection.Hyperlinks(1).TextToDisplay = "bar" End Sub #### use strict; use warnings; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; use Win32::OLE::Variant; use Win32::OLE::NLS qw(:LOCALE :DATE); $Win32::OLE::Warn = 3; # Die on Errors. my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $Book = $Excel->Workbooks->Open('C:\Documents and Settings\David\hyperlinks.xls'); my $Sheet = $Book->Worksheets("Sheet1"); $Sheet->Activate(); foreach ( 1.. $Sheet->Hyperlinks->Count() ){ print "\n"; warn $Sheet->Hyperlinks($_)->TextToDisplay; warn $Sheet->Hyperlinks($_)->Address; # warn $Sheet->Hyperlinks($_)->Anchor; # This errors with "Member not found" } $Book = $Excel->Workbooks->Close();