Prüfen ob Datei in Verzeichnis vorhanden

Hallo Access- Freunde,

hab wieder mal ein Problem mit der Programmierung.
In einem Formular möchte ich über einen Button eine Excel- Tabelle verküpfen. Das ganze mach ich über folgenden Code:

If Text8 „“ Then
DoCmd.SetWarnings False
DoCmd.DeleteObject acTable, „Import_TruLaser_7040“
DoCmd.TransferSpreadsheet acLink, , „Import_TruLaser_7040“, „P:\300_Produktion\311_Technologie_Montage\06_TruLaser70xx\05_Versand_TruLaser70xx\Stücklisten“ & Me!Text8, True
DoCmd.SetWarnings True
End If

So weit so gut. Hab ich im Feld Text8 aber etwas falsches eingegeben löscht es die Import- Tabelle aber fügt keine neue ein, da durch den Schreibfehler diese ja nicht vorhanden ist. Möchte ich das nächste Mal importieren kommt der Fehler, dass die Tabelle Import nicht gefunden wurde…ist ja klar, hab ich ja gelöscht.

Jetzt hatte ich überlegt, ob ich den Löschbefehl einfach weglasse, nur dann verküpft es mir ja unendlich viele Tabellen, mit hinten fortlaufender Nummer. Damit kann ich nichts anfangen.

Meine Frage ist nun: Gibt es irgendwie einen Befehl, mit dem man das Verzeichnis durchsuchen kann und wenn die Datei nicht vorhanden ist, den Vorgang abbrechen kann, bevor die Import- Tabelle gelöscht wird?

Ich hoffe ihr könnt mir helfen.

Viele Grüße von Beate

Hallo.

If Text8 „“ Then
DoCmd.SetWarnings False
DoCmd.DeleteObject acTable, „Import_TruLaser_7040“
CurrentDB.Execute "DELETE * FROM Import_TruLaser_7040"
DoCmd.TransferSpreadsheet acLink, , „Import_TruLaser_7040“,
„P:\300_Produktion\311_Technologie_Montage\06_TruLaser70xx\05_Versand_TruLaser70xx\Stücklisten“
& Me!Text8, True
DoCmd.SetWarnings True
End If

Ich hoffe ihr könnt mir helfen.

Mit obiger Änderung wird nicht die Tabelle gelöscht, sondern nur deren Inhalt. Das beinhaltet zwar nicht die Prüfung auf Existenz, erledigt aber Deine Fehlermeldung.

Um die Existenz der Importdatei zu prüfen, kannst Du noch folgendes tun :

Public Function pfn\_boo\_ImportOK(ByVal lpi\_str\_FileName \_
 As String) As Boolean
On Error GoTo IMPORT\_ERR
DoCmd.TransferSpreadsheet acLink, , "ImportTest", lpi\_str\_FileName
CurrentDB.Execute "DROP TABLE ImportTest"
pfn\_boo\_ImportOK=True
Exit Function
IMPORT\_ERR:
pfn\_boo\_ImportOK=False
End Function

und das in Den Code wie folgt einbauen :

If Text8 "" Then
**If (Not (pfn\_boo\_ImportOK("P:\300\_Produktion\311\_Technologie\_Montage\06\_TruLaser70xx\05\_Versand\_TruLaser70xx\Stücklisten\"))) Then  
 MsgBox "Ham wa nich!"  
 Exit Sub  
End If  
DoCmd.SetWarnings False  
DoCmd.DeleteObject acTable, "Import\_TruLaser\_7040"  
CurrentDB.Execute "DELETE \* FROM Import\_TruLaser\_7040"  
DoCmd.TransferSpreadsheet acLink, , "Import\_TruLaser\_7040",  
"P:\300\_Produktion\311\_Technologie\_Montage\06\_TruLaser70xx\05\_Versand\_TruLaser70xx\Stücklisten\"  
& Me!Text8, True  
DoCmd.SetWarnings True  
End If**  

NB : Ich habe mit mir gerungen, ob ich Dir überhaupt antworten will. Es fehlt nämlich noch die eine oder andere Rückmeldung. Ich rufe nämlich nicht gern in dunkle Röhren ohne Echo, weißt Du.

Gruß Eillicht zu Vensre

Hallo Beate,

möglicherweise könnte der Befehl DIR Dir weiterhelfen. Er gibt eine Leeren-Wert zurück, wenn die Datei nicht vorhanden ist.

z.B. test = dir(„c:\test.txt“)

Viele grüße
Ralf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Beate,

um festzustellen ob eine Datei in einem bestimmtem Verzeichnis vorhanden ist gint es die LookIn Methode des FileSearch Objekts.

Dim fs as Object
Set fs = Application.FileSearch
With fs
.LookIn = „C:\My Documents“
.FileName = „cmd*.*“
If .Execute > 0 Then
MsgBox „There were " & .FoundFiles.Count & _
" file(s) found.“
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox „There were no files found.“
End If
End With

Allerdings muss ich dir noch den Tipp geben: RTFM

Der obige Code ist aus der VBA-Hilfe von Access.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

tut mir leid, wenn ich mich nicht immer melde. Irgendwie vergess ich das immer, weil es dann funktioniert. So auch dieses mal. Vielen Dank für die Hilfe.

Viele Grüße von Beate