Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EXCEL - Hyperlink auf ein anderes Tabellenblatt (https://www.delphipraxis.net/180950-excel-hyperlink-auf-ein-anderes-tabellenblatt.html)

Nimmersatt 2. Jul 2014 15:53

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

Jumpy 2. Jul 2014 17:19

AW: EXCEL - Hyperlink auf ein anderes Tabellenblatt
 
Ich hab das mal direkt in Excel getestet, Makrorekorder ist schon was feines:
Code:
ActiveSheet.Hyperlinks.Add ActiveSheet.Cells(5, 5), "", "Tabelle1!B6", , "Test"
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:

Delphi-Quellcode:
excel.sheets[1].Hyperlinks.Add(excel.sheets[1].cells[1,1],'','Tabelle2!B2',EmptyParam,'Linktext');

Nimmersatt 3. Jul 2014 12:08

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:

Jumpy 3. Jul 2014 14:52

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.

Nimmersatt 3. Jul 2014 16:00

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.

Jumpy 4. Jul 2014 08:48

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);

Nimmersatt 4. Jul 2014 14:15

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:

Jumpy 4. Jul 2014 14:22

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);

Nimmersatt 4. Jul 2014 15:14

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:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz