Das mit den Leerzeichen zumindest (Sonderzeichen nicht getestet) müsste doch mit Quoted-String gehen:
Obiges Beispiel angepasst, Name des Sheets sei "Willi Bald 123":
Delphi-Quellcode:
var HyperlinkTarget : String;
HyperlinkText : String;
[...]
// für excel.sheets[2].cells[2,2]:
HyperlinkTarget:=QuotedStr(excel.sheets[2].name)+'!B2'
// oder: HyperlinkTarget:=''''+excel.sheets[2].name+''''+'!B2'
HyperlinkText:='Hier geht's weiter'
excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],'',HyperlinkTarget,EmptyParam,HyperlinkText);