Clever-Excel-Forum

Normale Version: VBA wenn Datei nicht vorhanden Alternative öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin,

ich benötige bitte Hilfe.

Ich habe eine für meinen Verein eine Liste erstellt wo Dateien angehängt sind.
Das Funktioniert auch alles.

Nun ist es aber so das auf einem Button die Datei angehängt werden soll welche gerade aktuell ist.
Leider bekomme ich den Code nicht hin. 

Ist die Bekanntgabe nicht vorhanden soll er die Niederschrift öffnen.
Ist die Niederschrift ebenfalls nicht vorhanden dann soll er auf die Anwesenden zugreifen.

Dim strPfad As String
Dim strPfad1 As String
Dim strPfad2 As String
           
strPfad = "C:\Users\Lenovo\Desktop\Bekanntgabe1.pdf"
strPfad1 = "C:\Users\Lenovo\Desktop\Anwesende.pdf"
strPfad2 = "C:/Users/Lenovo/Desktop/Niederschrift.pdf"

If strPfad = "" Then
    ThisWorkbook.FollowHyperlink strPfad1
    ElseIf strPfad1 = "" Then
    ThisWorkbook.FollowHyperlink strPfad2
    Else
    ThisWorkbook.FollowHyperlink strPfad
End If


das habe ich mir soweit zusammen geschrieben funktioniert aber nur mit 2 Dateien. wo ist der Fehler ?

viele Grüße und danke für eure Hilfe
Hi,

erstens hast du in strPfad2 die Pfad-Trenner falsch herum ("/" statt "\") und zweitens funktioniert deine Routine nur mit einer Datei, nämlich der ersten. Wieso? Weil keiner deiner strPfade leer ist und du somit immer beim letzten Else landest.

Du kannst z.B. mit Dir(*) prüfen, ob eine Datei existiert:
Code:
If Dir(strPfad) <> "" Then
    ThisWorkbook.FollowHyperlink strPfad
ElseIf Dir(strPfad1) <> "" Then
    ThisWorkbook.FollowHyperlink strPfad1
Else
    ThisWorkbook.FollowHyperlink strPfad2
End If
Beachte auch die geänderte korrekte Logik. Bei deiner Variante hätte er nur dann die erste Datei aufgerufen wenn die zweite nicht vorhanden wäre.

(*) Ist zwar die einfachste Methode, kann aber Nebenwirkungen haben. Daher wird gerne empfohlen auf andere Möglichkeiten - insbesondere das FilsSystemObject (FSO) - auszuweichen. Aber für den Zweck hier reicht es.