![]() |
EXCEL - Hyperlink auf ein anderes Tabellenblatt
Hallo,
Ich möchte über Delphi in Excel ein Hyperlink setzen, das auf ein anderes Tabellenblatt verweist. folgender Versuch ist fehlgeschlagen excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],excel.sheets[2].cells[2,2]); Ein Versuch den Hyperlink auszulesen, um die korrekte Adressierung zu erfahren, ist fehlgeschlagen if Excel.Range['a1', 'a1'].Hyperlinks.Count > 0 then ShowMessage(Excel.Range['a1',a1'].Hyperlinks[1].Address); Mein nächster Versuch ist ebenfalls fehlgeschlagen excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],’Tabelle2!B2'); Welche Adresse müsste ich für den Sprung zum 2. Tabellenblatt für die Zelle B2 angeben excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],’Adresse’); Danke |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Ich hab das mal direkt in Excel getestet, Makrorekorder ist schon was feines:
Code:
Umgemünzt auf dein Szenario ungefähr so, wobei man die Adresse des Ziels scheinbar als String braucht, d.h. das müsstest du ggf. ermitteln, ich habs mal fix mit Zelle B2 auf Sheet Tabelle2 angenommen:
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(5, 5), "", "Tabelle1!B6", , "Test"
Delphi-Quellcode:
excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],'','Tabelle2!B2',EmptyParam,'Linktext');
|
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Hallo Jumpy,
Danke, es hat wunderbar geklappt.:thumb: Aber ich habe noch ein klitzekleines Problem. Wenn ich den Namen des Tabellenblattes verändere und der Hyperlink auf diesen veränderten Namen verweist,kommt die Meldung - Bezug ist ungültig.:cry: |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Kannst du mMn nicht verhindern und hast du auch, wenn du einen Hyperlink von Hand anlegst. Im Gegensatz zu Excel-Zellen und -Formeln die diese Bezüge bei Veränderungen anpassen scheint mir das bei den Hyperlinks fix zu sein.
|
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Hallo Jympy,
Ich hatte schon vorher die Namen der Tabellenbätter verändert. Wenn ich dann in EXCEL per Hand ein Hyperlink anlege, dann funktioniert der Hyperlink. Unter Delphi funktioniert der programmierte Hyperlink nicht. Ich habe es auch über einen Sheet-Index versucht, bisher hat es nicht funktioniert. Vielleicht gibt es da einen Weg ? Ich kann mir nicht vorstellen, das da in Excel für dieses Problem keine Vorkehrungen getroffen wurden. |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
OK, verstehe was du meinst. Du willst einen Link z.B. auf Sheet 2, dass aber irgendwie heißt und nicht Tabelle2.
Dafür kannst du doch einfach sagen
Delphi-Quellcode:
var HyperlinkTarget : String;
HyperlinkText : String; [...] // für excel.sheets[2].cells[2,2]: 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); |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Hallo Jumpy,
Ich habe den Fehler gefunden. Wenn der Name des Tabellenblattes ein Leerzeichen, ein Minuszeichen oder ein bestimmtes Sonderzeichen enthält, ist eine Adressierung über Delphi nicht möglich. Per Hand in Excel ist das aber möglich. Alle meine Tabellenblätter hatten irgendwelche Sonderzeichen, wie z.B. die Namen des Tabellenblattes Score-Werte, 1. Variante und genau das hat mich in die Irre geführt. Aber vielen Dank für deine Hilfe.:thumb::thumb::thumb: |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
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); |
AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
Hallo Jumpy,
Bingo ! QuotedStr kannte ich gar nicht. Das mit den anderen Sonderzeichen funktioniert jetzt auch. Jetzt sind alle Probleme gelöst. Danke !:thumb::thumb::thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz