Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Excel -> Hyperlink -> witz? (https://www.delphipraxis.net/161861-excel-hyperlink-witz.html)

t0mmy 25. Jul 2011 07:44

Excel -> Hyperlink -> witz?
 
Hallo?

Naja... ich versteh nicht warum ein code einen ganzen tag lang funktioniert und dann gehts am nächsten tag nimmer. -.-
Und zwar öffne ich Excel, suche mit folgendem Code einen hyperlink:

Delphi-Quellcode:
 try
 Excel.Workbooks.Open('K:\2011\1_Projekte\12_Tomi\Werkstattnummern_2011.xlsx'); //open the excel workbook
 if Excel.Range['I863', 'I863'].Hyperlinks.Count > 0 then //check if exist hyperlinks in the range
    pfad := Excel.Range['I863', 'I863'].Hyperlinks[1].Address;
    ShowMessage(Excel.Range['I863', 'I863'].Hyperlinks[1].Address); //show the hyperlink
 finally
    //
 end;
und dann möchte ich mit folgendem Code das Verzeichnis öffnen:

Delphi-Quellcode:
ShellExecute(0, 'open', PChar(pfad), nil, nil, SW_ShowNormal);
und es passiert nichts -.- ... das ist doch ein witz oder?

DeddyH 25. Jul 2011 08:38

AW: Excel -> Hyperlink -> witz?
 
Was steht denn in "pfad" drin?

[edit] Und was gibt ShellExecute zurück? [/edit]

t0mmy 25. Jul 2011 08:46

AW: Excel -> Hyperlink -> witz?
 
In pfad steht ../../../Pfad

Wie seh ich nach was ShellExecute zurückgibt?

Wenn ich in excel den Hyperlink anklicke dann öffnet er den Pfad

DeddyH 25. Jul 2011 08:51

AW: Excel -> Hyperlink -> witz?
 
Merk Dir doch den Rückgabewert von ShellExecute und lass ihn Dir ausgeben.
Delphi-Quellcode:
Wert := ShellExecute(...);
if Wert < 33 then
  ShowMessage('Fehler ' + IntToStr(Wert));

t0mmy 25. Jul 2011 08:59

AW: Excel -> Hyperlink -> witz?
 
Hi Danke!

Fehler 2 meldet er -.-

DeddyH 25. Jul 2011 09:03

AW: Excel -> Hyperlink -> witz?
 
Ich dachte mir schon, dass da 2 (File not found) oder 3 (Path not found) zurückkommt. Hast Du einmal versucht, die relativen Pfade in absolute umzuwandeln? Es wird ja versucht, vom aktuellen Arbeitsverzeichnis 3 Ebenen höher und dann in das angegebene Verzeichnis zu kommen. Wenn das Arbeitsverzeichnis also nicht stimmt, kann das nicht funktionieren.

t0mmy 25. Jul 2011 09:09

AW: Excel -> Hyperlink -> witz?
 
Naja.. ich habs mir eh schon gedacht weils ../../../ aber es hat letzte woche funktioniert... und wenn ich auf den hyperlink direkt im Excel-sheet klick öffnet ers auch..

DeddyH 25. Jul 2011 09:13

AW: Excel -> Hyperlink -> witz?
 
Was Excel macht, weiß ich nicht, jedenfalls können relative Pfade zu unerwarteten Ergebnissen führen, wie man hier wieder sieht. Das aktuelle Arbeitsverzeichnis kann ja z.B. durch einen OpenDialog o.ä. geändert worden sein. Wenn Dir jemand sagt: "Geh in den 4. Stock und klingel bei Zaphod Bebblebrox" funktioniert das ja auch nur, wenn Du in der Arthur-Dent-Str. 42 bist, in der Marvin-Allee 3 wird das wahrscheinlich nicht klappen.

t0mmy 25. Jul 2011 09:20

AW: Excel -> Hyperlink -> witz?
 
Okay, jetzt versteh ichs.. aber jedoch bekomme ich wenn ich in Excel die Hyperlinks ansehe.. bei allen eine relativen pfad.

DeddyH 25. Jul 2011 09:26

AW: Excel -> Hyperlink -> witz?
 
Wie gesagt: ich habe Excel nicht programmiert und weiß daher nicht, was dort bei relativen Pfaden gemacht wird. Anscheinend werden diese dort auch in absolute (ausgehend vom eigenen Verzeichnis der Datei) umgewandelt, aber das ist reine Spekulation meinerseits.

Bernhard Geyer 25. Jul 2011 10:16

AW: Excel -> Hyperlink -> witz?
 
Zitat:

Zitat von t0mmy (Beitrag 1113397)
Okay, jetzt versteh ichs.. aber jedoch bekomme ich wenn ich in Excel die Hyperlinks ansehe.. bei allen eine relativen pfad.

Stört doch nicht. Du weißt doch von wo du die Excel-Datei geöffnet hast. Also kannst du diese relative Pfade in Absolute umrechen.

Probier einfach mal

Delphi-Quellcode:
ExtractdFilePath(<GeöffneteExcelDatei) + "\" + <Relative Pfadangabe>
um die korrekte URL zu haben.

DeddyH 25. Jul 2011 10:31

AW: Excel -> Hyperlink -> witz?
 
ExtractFilePath enthält bereits den abschließenden Backslash, im Gegensatz zu ExtractFileDir ;)

Bernhard Geyer 25. Jul 2011 10:33

AW: Excel -> Hyperlink -> witz?
 
Zitat:

Zitat von DeddyH (Beitrag 1113408)
ExtractFilePath enthält bereits den abschließenden Backslash, im Gegensatz zu ExtractFileDir ;)

AFAIK ist das Windows ab NT/2000 egal das 2 Backslashes hintereinander kommen. Und in meinem alter macht man lieber etwas mehr als zu wenig :stupid:

t0mmy 25. Jul 2011 10:41

AW: Excel -> Hyperlink -> witz?
 
Okay, jetzt habe ich gegooglet um eine lösung zu finde, jedoch ohne erfolg -.-
Wie schaffe ich eine umwandlung zur absoluten pfadangabe?

DeddyH 25. Jul 2011 11:00

AW: Excel -> Hyperlink -> witz?
 
Wie Bernhard bereits schrieb: Pfad zur *.xls und dann einfach die relative Pfadangabe dahinter, das kann ruhig so aussehen: C:\Program Files\Bla\Blubb\Wuppdi\..\..\Datei.ext (das wäre dann Datei.ext in C:\Program Files\Bla).

t0mmy 25. Jul 2011 12:00

AW: Excel -> Hyperlink -> witz?
 
Ja, das hab ich auch gegooglet.. jedoch funktioniert auch nicht und ShellExecute bringt wieder den fehler das er die datei nicht finden kann -.-

DeddyH 25. Jul 2011 12:23

AW: Excel -> Hyperlink -> witz?
 
Hast Du Dir den so zusammengebauten Pfad einmal ausgeben lassen? Existiert die Datei auch wirklich dort?

t0mmy 25. Jul 2011 12:28

AW: Excel -> Hyperlink -> witz?
 
Ja hab ich... und wenn ich den kopier und in den Explorer einfüge, findet er diesen auch nicht.

DeddyH 25. Jul 2011 12:32

AW: Excel -> Hyperlink -> witz?
 
Das bedeutet dann ja, dass irgend etwas nicht stimmt. Wie setzt Du den Pfad denn zusammen?

t0mmy 25. Jul 2011 12:44

AW: Excel -> Hyperlink -> witz?
 
Also ich hab den root pfad bis zum zweiten unterverzeichnis.... mit dem was ich aus Excel rausbekomme zusammen gestetzt

Beispiel:

K:\Neuer Ordner1\Neuer Ordner2\....\..\..\Neuer OrdnerX\Neuer OrdnerX\

DeddyH 25. Jul 2011 12:47

AW: Excel -> Hyperlink -> witz?
 
Sind da wirklich einmal 4 Punkte hintereinander? Das sieht irgendwie komisch aus. Funktioniert es, wenn Du da noch einen Backslash dazwischensetzt?

BUG 25. Jul 2011 12:51

AW: Excel -> Hyperlink -> witz?
 
Zitat:

Zitat von DeddyH (Beitrag 1113439)
Sind da wirklich einmal 4 Punkte hintereinander? Das sieht irgendwie komisch aus. Funktioniert es, wenn Du da noch einen Backslash dazwischensetzt?

K:\Neuer Ordner1\Neuer Ordner2\..\..\..\..\
K:\Neuer Ordner1\..\..\..\
K:\..\..\

alleine wäre imho auch schon kein gültiger Pfad :gruebel:

t0mmy 25. Jul 2011 12:57

AW: Excel -> Hyperlink -> witz?
 
A, Nein, hab mich verpunktet :) nur zwei.

t0mmy 25. Jul 2011 13:56

AW: Excel -> Hyperlink -> witz?
 
jedoch funktioniert dies auch nicht -.-

DeddyH 25. Jul 2011 14:46

AW: Excel -> Hyperlink -> witz?
 
Den berechtigten Einwand von BUG hast Du aber gelesen?

BUG 25. Jul 2011 20:42

AW: Excel -> Hyperlink -> witz?
 
Es sieht ja so aus als ob die Exceldatei wie folgt heißt:
K:\2011\1_Projekte\12_Tomi\Werkstattnummern_2011.x lsx


Wenn der relative Pfad (im Link) nun wie folgt ist:
..\..\..\Neuer OrdnerX\Neuer OrdnerX\

Müsste der absolute Pfad den du haben willst, wie folgt sein:
K:\2011\1_Projekte\12_Tomi\..\..\..\Neuer OrdnerX\Neuer OrdnerX\
K:\2011\1_Projekte\..\..\Neuer OrdnerX\Neuer OrdnerX\
K:\2011\..\Neuer OrdnerX\Neuer OrdnerX\
K:\Neuer OrdnerX\Neuer OrdnerX\

Haut das hin?
Wenn nicht, wäre es sicher hilfreich, wenn du mal alle Pfade angeben würdest.
  • absoluter Pfad der Exceldatei
  • ausgelesener Linkpfad
  • absoluter Pfad zum Ziel (also da wo du hinkommst, wenn du auf den Link klickst)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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