# Wie Prüfen ob Datei vorhanden ist?



## stitch (31. Januar 2002)

Bastel immer noch ein bisschen an meinem NetSend Programm rum (siehe: http://www.tutorials.de/forum/showthread.php?s=&threadid=8222) 

Das einzige was mir jetzt noch fehlt, währe einen Online Status ähnlich ICQ.
In PHP gibts ja die Funktion file_exists() mit der man checken kann ob eine Datei vorhanden ist. Gibt es sowas auch in VB? Wenn ja könnte ich nämlich auf die Rechner in meinem LAN überall ne Datei legen und dann je nach Existens mit ner If Abfrage den Status anzeigen.
In meinem Buch find ich darüber nichts, aber da stand das mit den Dos Befehlen via shell auch net drin :-(

thx, im vorraus!


----------



## Dario Linsky (31. Januar 2002)

unter vb gibts glaub ich keine fertige funktion um die existenz einer datei zu ueberpruefen. also selber eine schreiben...

Public Function FileExists(FileName As String) As Boolean
  FileExists = (Dir$(FileName) <> "")
End Function


regards


----------



## SonMarcel (16. November 2008)

Hi,

ich bearbeite gerade den Quellcode des Makros eine Access Dokuments und habe genau diese Funktion eingefügt, aber irgendwie ignoriert VBA beim Ausführen, dass ich diese Funktion ausgeführt haben möchte.

Folgenden Code habe ich ganz unten im Code eingefügt:


```
Public Function FileExists(ByVal FileName As String) As Boolean 'DatNameundPfad einsetzen
  FileExists = (Dir$(FileName) <> "")
End Function
```


Aufgerufen wird die Funktion durch diesen Code:

```
VerZ = "c:\TourblattKontrolle\Tourblaetter\SA13\" & datum & "\"
DatName = Dir(VerZ)
DatNameNeu = Right(DatName, 7)
DatNameundPfad = VerZ & DatNameNeu      'Soll-Endergebnis des Umbenennens (neuer Pfad + Dateiname)

Do While DatName <> ""
If FileExists(DatNameundPfad) = False Then
    Name VerZ & DatName As VerZ & "T" & DatNameNeu
Else
    Name VerZ & DatName As VerZ & "T-" & DatNameNeu
End If
DatName = Dir(VerZ)
DatNameNeu = Right(DatName, 7)
DatNameundPfad = VerZ & DatNameNeu
Loop
```


Zum Code:

Es geht um mehrere Dateien mit längeren Dateinamen. Jede Datei endet mit "ZZZ.pdf", also einer dreistelligen Zahl und der Endung. Ich möchte nun jede Datei umbenennen in "TZZZ.pdf", statt wie vorher "456465(...)ZZZ.pdf". Den neuen Dateinamen jeder Datei habe ich bereits bestimmt. Es gibt aber auch schonmal zwei der zu verarbeitenden Dateien, die eine gleiche Endung haben (also diese drei Zahlen samt pdf, nur die Zahlen davor unterscheiden sich). Durch meine Verzweigung möchte ich eigenlich erreichen, dass zuerst überprüft wird, ob der neue Dateiname, den die Datei erhalten soll, bereits vergeben ist (also ob da schon eine solche Datei vorhanden ist). Bei "True", also "doppelt vorhanden", soll das Programm sofort zum Else springen und ein "T-" vor die Zahl setzen, damit ich dann z.B. die Dateien "T745.pdf" und "T-745.pdf" habe.

Leider spuckt mir das Programm aber immer wieder in der Zeile der ersten Verzweigung die Meldung "Datei bereits vorhanden" raus. Ziel war es ja eigendlich, diese Meldung zu verhindern.

Kann mir vielleicht einer sagen, warum das gewünschte nicht ausgeführt wird? Was habe ich denn hier falsch gemacht?

Vielen Dank schonmal,

Marcel


----------



## Zvoni (17. November 2008)

Zwei Dinge:
In der zweiten Zeile suchst du nach einem Ordner und nicht nach einer Datei.
In der viertletzten Zeile der Do-Loop-Schleife muss ein
DatName=Dir
rein, wenn du zur nächsten Datei willst.


----------



## SonMarcel (26. November 2008)

Zvoni hat gesagt.:


> Zwei Dinge:
> In der zweiten Zeile suchst du nach einem Ordner und nicht nach einer Datei.
> In der viertletzten Zeile der Do-Loop-Schleife muss ein
> DatName=Dir
> rein, wenn du zur nächsten Datei willst.





Fehler gelöst! Deine zwei Dinge waren nicht der Fehler. Er lag hier:

DatNameundPfad = VerZ & DatNameNeu

richtig wäre 

DatNameundPfad = VerZ & "T" & DatNameNeu

Erst dadurch wird die Abfrage auch richtig ausgeführt.

Aber danke für den Lösungsansatz!

Marcel


----------

