Hallo Alex!
Hallo Marcus,
Danke erst mal für die Antwort. Ich habe es noch nie so
versucht. Habe deinen Code mal bei mir eingeschrieben,
Nichts zu danken 
Und es gibt ein erstes male *zwinker*
dim sFile as String
sFile=IIF(right(app.path,1)="",app.path &
„Ordner\Datei.pdf“,app.path & „\Ordner}Datei.pdf“)
if dir(sFile)"" then ShellExecute(Formname.hwnd,
„Open“, sfile,"","",1)
aber so klappt es nicht. Entweder kommt Syndaxfehler oder er
erwartet „=“, dann hat er was zu meckern das der Type nicht
stimmen würde. Ich hätte nie gedacht das das finden einer
Datei sooooooo viel Ärger machen kann.
Owei Asche auf mein Haupt. Nunja passiert wenn man es net testet :s
Also wo die Fehlermeldung herkommen soll das die Typen net stimmen, ist mir fraglich.
Die Sache mit dem = , das ist meine Schuld :s
Wenn du eine API oder eine Sub aufrufst, ohne das Schluesselwort CALL so darfst du die Klammern nicht mitschreiben :s
Genauso ist es wenn du eine Function aufrufst!
Du darfst dann die Klammernnur schreiben,wenn du den Rueckgabewert einer Variablen zuweist 
Duj haettest den Source eigentlich nur wiefolgt abaendern muessen
dim sFile as String
sFile=IIF(right(app.path,1)="\",app.path & "Ordner\Datei.pdf",app.path & "\Ordner}Datei.pdf")
if dir(sFile)"" then **ShellExecute Formname.hwnd,"Open", sfile,"","",1**
Aber ich hatte gerade mal Zeit. Vor einiger Zeit hatte ich hier mal eineRoutine gepostet, wie man Files Öffnet.
Diese ist arg flexibel. Ich habe sie mal um einiges weiter erweitert 
Aber eine Erklärung dazu kommt später. Hier erst einmal die Function
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Function LaunchDocument(ByRef Filename As String, \_
ByVal ParentForm As Form, \_
Optional ByVal ShowOpenWithDialog As Boolean = True, \_
Optional ByVal WindowStyle As VBA.VbAppWinStyle = vbNormalFocus) As Boolean
Dim lSuccess As Long
Dim hWndParent As Long
LaunchDocument = False
If Not ParentForm Is Nothing Then hWndParent = ParentForm.hwnd
lSuccess = ShellExecute(hWndParent, "Open", Filename, \_
vbNullString, vbNullString, \_
WindowStyle)
Select Case lSuccess
Case 2 'Datei nicht gefunden
Case 3 ' Pfad wurde nicht gefunden
Case 5 'Zugriff verweigert
Case 11 'Keine Win32 Anwendung
Case 26 'Sharing Verletzung
Case 27 'Datei Assoziation ist unvollstaendig
Case 28 'DDE Zeitlimit wurde erreicht
Case 29 'DDE Vorgang gescheitert
Case 30 'DDE ist nciht bereit
Case 31 ' Keine verknüpfte Anwendung
' Falls ShowOpenWithDialog = True, wird der Dialog
' "Öffnen mit" für diese Datei angezeigt:
If ShowOpenWithDialog Then Shell "RunDLL32 shell32.dll,OpenAs\_RunDLL " & Filename ' Die Auswahlmöglichkeit wird als Erfolg gewertet: LaunchDocument = True End If Case Else ' ShellExecute war erfolglos. ' Boolean-Standardwert False zurückgeben
LaunchDocument = True
Case 32
Case Is \> 32 ' Aufruf erfolgreich
LaunchDocument = True
End Select
End Function
Du rufst einfach die Function auf. Als Rueckgabewert erhaelst du True oder False!
True -> Aufruf efolgreich
False -> Aufruf fehlgeschlagen
Als Parameter, wird folgendes Verlangt
Filename-> Erforderlich, Verlangt das File was geöffnet werden soll
ParentForm -> Die Form aus der die Function aufgerufen wird
Optionale Parameter
Das bedeutet sie muessen nicht angegeben werden! Wenn du sie weglaesst so werden die angegebenen StandardWerte genommen!
ShowOpenWithDialog:
Ist die zu öffnende Datei mit keiner Anwendung verknuepft so wird bei Angabe von TRUE der ÖFFNEN MIT Dialog angezeigt! Standartwert ist TRUE
WindowStyle ->Gibt an ob das öffnende File Maximiert, Minimiert, Normal etc gestart werden soll! Hierzu ist eine VB APPWINSTYLE Variable nötig. Du bekommst aber eine Auswahl der Möglichkeiten angezeigt, wenn du den Parameter eingeben willst! Standartwert hier ist Normal!
Nun siehst du in der Function noch die Select Case Anweisung! Die API SHellExecute gibt dir einen Wert zurueck. Ich habe dir alle möglichen Rueckgabewerte notiert, mit einen Vermerk wann sie auftreten. Hier könntest du noch eine bestimmte MEssage ausgeben oder den Fehler abfangen. Die Function die ich dir da getippselt habe, ist nur als Ansatz und du kannst sie deinen Beduerfnissen noch anpassen 
So das waere eigentlich alles. Nun noch ein Paar mögliche Aufrufe!
Dim vRet As Boolean
'hier ein paar Variante
vRet = LaunchDocument("DeinFile.DieExtension", Me)
vRet = LaunchDocument("DeinFile.DieExtension", Me, False)
vRet = LaunchDocument("DeinFile.DieExtension", Me, , vbMaximizedFocus)
vRet = LaunchDocument("DeinFile.DieExtension", Me, False, vbNormalNoFocus)
'Und die Auswertung
If vRet Then
MsgBox "File erfolgreich geöffnet", vbInformation
Else
MsgBox "Fehler beim öffnen des File's!", vbCritical
End If
So diesmal habe ich es auch getestet und es klappt soweit auch alles 
MfG Alex
Danke Marcus