Verzeichnis durchsuchen

Hallo…

Ich möchte in Excel per VBA ein Verzeichnis durchsuchen, und prüfen ob eine neue Datei vorhanden ist, oder nicht!!
Geht das, und wenn ja, wie???

danke schon mal!

mfg
basti

Hallo, Basti!

Ich möchte in Excel per VBA ein Verzeichnis durchsuchen, und
prüfen ob eine neue Datei vorhanden ist, oder nicht!!
Geht das, und wenn ja, wie???

Ziemlich einfach ist dazu der Dir-Befehl:

Dir("C:\Temp\NochEinVerzeichnis\MeineDatei.xls") 

liefert „MeineDatei.xls“, wenn die Datei vorhanden ist, ansonsten „“, und außerdem den Fehler 76(? irgendwas um den Trichter…), wenn der Pfad nicht vorhanden ist (und 75[?], wenn das Laufwerk nicht verfügbar ist).

Du kannst auch mit Dir(„C:\Temp*.xls“) die erste Datei mit xls als Endung ausgeben. Wenn Du anschließend nur Dir ohne Paramter aufrufst, bekommst Du die nächste Datei passend zum Muster.

Gruß, Manfred

Gibts da auch einen Befehl, der mir einfach ein True oder False zurückgibt, Ich will nur wissen, ob eine neue Datei hinzugekommen ist. von der Datei ist nur die Endung bekannt…

Gibts da auch einen Befehl, der mir einfach ein True oder
False zurückgibt, Ich will nur wissen, ob eine neue Datei
hinzugekommen ist. von der Datei ist nur die Endung bekannt…

Das heißt, Du solltest vorher wissen, wie viele Dateien mit der Endung vorhanden sind. Und dann überprüfst Du die neue Anzahl. Wenn’s mehr wurden, ist eine neue Datei hinzugekommen. Schönheitsfehler: Eine Datei wird gelöscht, eine neue kommt hinzu, ergo Anzahl gleich, ergo falsches Ergebnis.

Wenn so was passieren kann, hilft nur, die vorhandenen Dateien in ein Array oder ähnliches zu schreiben. Dann beim Auslesen der vorhandenen Dateien mit dem bestehenden Array auf Vorkommen überprüfen. Das Auslesen der Dateien mit dem Dir-Befehl wie beschrieben.

Einen einzigen Befehl dazu gibt es nicht. Oder geht es um die gerade aktuell geöffnete Datei? Und wann soll denn die Überprüfung stattfinden? Permanent oder auf Knopfdruck/sonstige Aktion?

Gruß, Manfred

Gibts da auch einen Befehl, der mir einfach ein True oder
False zurückgibt, Ich will nur wissen, ob eine neue Datei
hinzugekommen ist. von der Datei ist nur die Endung bekannt…

vielleicht hilft dir
a) FileDateTime(Pfadname) wo du zu einer datei das datum & uhrzeit zurückbekommst

b)Application.FileSearch
wo du (auch) nach dateien suchen kannst, im speziellen auch
mit einem datumskriterium ( .LastModified)

Gruß
Gerald

Gelöscht werden keine Dateien… Die überprüfung soll nur dann stattfinden wenn ich einen „Knopf“ betätige.

Gelöscht werden keine Dateien… Die überprüfung soll nur dann
stattfinden wenn ich einen „Knopf“ betätige.

Dann würde die Anzahl langen. Beim Start rennst Du über das Verzeichnis und merkst Dir die Anzahl in einer globalen Variable. Beim Knopf rennst Du noch mal über das Verzeichnis und vergleichst die Anzahl der Dateien miteinander.

Eine Funktion zum Zählen der Dateien könnte so aussehen (nicht kompiliert und ebenso nicht fehlertolerant):

function GetDateianzahl(pstrMusterMitVerzeichnis as string)
 dim lngAnz as long
 dim strDatei as string

 lngAnz=0
 strDatei = Dir(pstrMusterMitVerzeichnis )
 Do While strDatei""
 lngAnz = lngAnz + 1
 strDatei = Dir
 Loop
 GetDateianzahl = lngAnz
end function

Beim Start schreibst Du die aktuelle Anzahl in eine globale Variable (oder sonst wo hin, wo Du Zugriff drauf hast und wo der Wert nicht gelöcsht wird). Beim Knopf-Drücken dann:
If GetDateianzahl(„C:\MeinVerzeichnis*.xls“)>glngVorherVorhandeneDateien Then Msgbox(„Neue Datei…“)

Gruß, Manfred