Hi nighty und joshua,
danke erst mal für eure Mühe.
Ich habe selbst eine Funktion verwendet, die auch weitgehend funktioniert:
Function dv(dn As String) As Boolean
dv = False
If Len(dn) > 0 Then
dv = (Dir(dn) <> "")
End If
End Function
Arbeitet wohl so ähnlich wie die in Antwort 2 von dir, nighty. Die Funktion wird von mir aufgerufen über b=dv(ziel.xls), wobei b den Wert True oder False liefert und entsprechend ausgewertet werden kann.
Mein Problem liegt offensichtlich ganz anders, ich habe es wohl nicht klar ausgedrückt:
Die Verzeichnisstruktur ist
C:\ebene1\ebene2\ebene3\test
Statt c:\ebene1\ebene2\ebene3\... könnte aber auch (auf einem anderen Rechner) eine andere Struktur stehen. Am Ende der Kette steht aber auf jeden Fall das Verzeichnis test.
Im Verzeichnis test befindet sich die Datei "kopieren.xls", in der ich arbeite, sowie eine Datei "vorlage.xls".
Im Verzeichnis ebene3 befindet sich (oder auch nicht!) die Datei "ziel.xls".
Diese Struktur muss erhalten bleiben!
Aus "kopieren" (in test) soll überprüft werden, ob "ziel" (in ebene3) existiert (ohne über cd das Arbeitsverzeichnis zu wechseln). Dazu lasse ich folgenden Suchstring bilden:
dp = ActiveWorkbook.Path
dp = Left(dp, Len(dp) - 4)
suchen = dp & "ziel.xls"
und rufe die Funktion dv auf:
b = dv(suchen)
Liefert b den Wert False, wird "vorlage" (test) als "ziel" (ebene3) kopiert. Liefert b den Wert True, geschieht an dieser Stelle nichts.
In beiden Fällen aber werden danach Teil-Informationen aus "vorlage" nach "ziel" übertragen.
Nun das eigentliche Problem:
Öffne ich erst EXCEL und dann die Datei "kopieren", funktioniert alles wunderbar.
Rufe ich aber die Datei "kopieren" z.B. aus dem Explorer auf, steigt EXCEL nach Aufruf der Funktion dv aus, wenn "ziel" nicht vorhanden ist! Das aber muss vermieden werden, da andere Benutzer durchaus die Datei aus dem Explorer aufrufen könnten!
Hallo nighty, ich weiß nicht weiter. Für dich vielleicht auch eine echte Herausforderung. Auf jeden Fall wende ich mich nochmal vertrauensvoll vor allem an dich.
Liebe Grüße
Peter
Noch eine Frage: Wozu dient "Application.Volatile"?