# (Office 2003) Hyperlinks mit [ oder ] funktionieren nicht



## KlaDi (3. September 2008)

Hallo, 

ich habe ein Makro erstellt, das sich aus einer Tabelle den Dateinamen holt. Anschließend diese Datei sucht und dann in der selben Tabelle einen Hyperlink auf die Datei erstellt. 

Mein Problem ist nun, das bei manchen Dateien der Hyperlink nicht erstellt wird. Wenn ich Ihn per Hand erstelle, dann funktioniert das erstmal einwandfrei. Klicke ich aber auf den Link, kommt der Fehler: Cannot open the specified file. 

In dem Pfad zur Datei sind unter anderem diese Klammern: [] enthalten, z.B.: 
C:\Dateien [neu]\Datei1.pdf 

Bei manchen Dateien scheinen die []-Klammern nicht zu stören, bei anderen aber doch. 

Weiß jemand wo das Problem liegen kann? 

gruß klaus.


----------



## duckdonald (3. September 2008)

hi
nebenbei: Hyperlinks in Excel ohne VBA erstellen...

Excel denkt bei den eckigen Klammern wohl das es eine Exceldatei ist und du eine Unterseite davon ansprechen willst. Oder, wenn du sagst es funktioniert bei einigen, könnte es sich an Leerzeichen stören.
Gibst du den Pfad/Dateiname in doppelten Anführungszeichen ein " ?

DD


----------



## KlaDi (3. September 2008)

Hi DD,

ich gebe den Hyperlink über ein Variable ein.

Mein Tabelle ist so aufgebaut, das in der Spalte B die Dateinamen stehen, diesen lese ich mit meinem Makro aus, anschließend suche ich die Datei in der Verzeichnisstruktur unterhalb meines Excelsheets. Wenn die Datei gefunden wird, wird der Hyperlink dann erstellt.

```
Option Explicit

Sub createHyperlinks()
Dim intRow As Integer
Dim Dateiname As String
Dim DateipfadUndName As String
Dim Pfadbegin As String
    Pfadbegin = "E:\"


For intRow = 2 To 3994
    Dateiname = getFilename(intRow)
    DateipfadUndName = DateiSuchen(Dateiname)
    If (DateipfadUndName <> vbNullString) Then
        createLink WorksheetFunction.Substitute(DateipfadUndName, Pfadbegin, ""), Dateiname, intRow
    End If
Next intRow

End Sub
Private Function getFilename(ByVal paLine As Integer)
    getFilename = Range("B" & paLine).Value
End Function

Private Function DateiSuchen(paDateiname As String) As String
'http://www.ms-office-forum.net/forum/showthread.php?t=237230
    Dim aryPfad()
    Dim i As Integer
    Dim bolGefunden As Boolean
    
    aryPfad = Array("E:\", "E:\Dateien\", "E:\Dateien [neu]\", "E:\Dateien [altes Zeug]\", "E:\Dateien [Unsinn]\", "E:\Dateien[Zu checken]\")
    i = 0
    bolGefunden = False
    Do
        If Len(Dir(aryPfad(i) & paDateiname)) = 0 Then
                i = i + 1
         Else
             bolGefunden = True
         End If
    Loop Until (i > UBound(aryPfad)) Or bolGefunden
    
    If bolGefunden Then
        DateiSuchen = aryPfad(i) & paDateiname
    Else
        DateiSuchen = vbNullString
    End If
End Function

Private Sub createLink(ByVal paPath As String, ByVal paName As String, ByVal paLine As Integer)
    Range("A" & paLine).Select
    Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=paPath, TextToDisplay:=paName
End Sub
```
Die Funktion Dateisuchen habe ich von hier übernommen: 'http://www.ms-office-forum.net/forum/showthread.php?t=237230

gruß klaus.


----------



## duckdonald (3. September 2008)

heya,

beim Test bei mir selbst mit normalen Dateinamen bringt Fehler.
Und zwar erzeugt der Links mit '/' seperator was aber den Internet-shema entspricht, für Lokale Dateien/Verzeichnisse wird '\' verwendet.

Entweder übergibst du den vollständigen Pfad per "file:///E:/...." Syntax
oder du fügst den gefundenen Pfad als Hyperlinkformel ein:

```
ActiveCell.FormulaR1C1 = "=HYPERLINK(""Dateipfad/-name"",""Linkname"")"
```
Im String selbst sind die jeweils 2 doppelten Anführungszeichen notwendig, sonst würde er das als Stringende interpretieren.

DD


----------



## KlaDi (3. September 2008)

Hallo,

erstmal danke für Deine Antwort(en).

Also Fehler hatte ich bisher keine, wenn ich das Makro ausführe..Vielleicht hab ich beim kürzen des Codes einen Fehler gemacht.

Ich hab noch ein wenig getestet und das Problem scheint mit dem Pfad zusammenzuhängen, meine Makro erstellt den Hyperlink mit einer relative Pfadangabe, was zu dem Fehler führt, das die Datei nicht gefunden werden konnte.
Erstelle ich aber den absoluten Pfad klappt das ganze einwandfrei.

Mein Problem ist jetzt nur, das ich keine absoluten Pfade setzen kann, da ich diese Dateien immer wieder zwischen Festplatten hin- und herkopieren werde und ich möchte nicht jedesmal beim öffnen des Excelsheets ein Makro ausführen um die Hyperlinks anzupassen.

Weiß vielleicht noch jemand weiter?

gruß klaus.


----------



## KlaDi (3. September 2008)

Hallo,

also ich habe mein Problem jetzt so gelöst, in dem ich einfach ein \ dem Dateipfad + -namen vorangestellt habe. Klappt einwandfrei.

gruß klaus.


----------

