Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Mykis am Dezember 30, 2012, 18:54:33

Titel: CreateObject("Scripting.FileSystemObject")
Beitrag von: Mykis am Dezember 30, 2012, 18:54:33
Nochmal zum Thema
CreateObject("Scripting.FileSystemObject")

Ich möchte folgenden Ordner mit Unterordner "C:\Mykis\Fungi" erstellen, um später Dateien in diesen Ordner zu kopieren:

    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.CreateFolder ("C:\Mykis\Fungi")
    Set FSO = Nothing

Es kommt aber die Meldung "Pfad nicht gefunden". Irgend was mache ich falsch!

Beste Grüße
Frank
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: bahasu am Dezember 30, 2012, 19:13:00
Hi,

1.
gibt es den übergeordneten Ordner "MyKis" bereits?
Wenn nein hilft es vielleicht, erst den anzulegen und dann den Unterordner.

2. Ansonsten probier mal den Befehl: MkDir

siehe Hilfe:
MkDir-Anweisung (Beispiel)
In diesem Beispiel wird die MkDir-Anweisung verwendet, um ein Verzeichnis oder einen Ordner zu erstellen. Wird kein Laufwerk angegeben, so wird das neue Verzeichnis bzw. der neue Ordner auf dem aktuellen Laufwerk erstellt.

MkDir "VERZ1"    ' Verzeichnis/Ordner neu erstellen.

Harald
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: Mykis am Dezember 30, 2012, 20:30:34
Hi Harald,

das funktioniert erstmal. Scheint einfach, aber als Anfänger...

Was muß ich an den Befehl MKDir "C:\Mykis" noch anhängen, damit er bei einen eventuellen zweiten Aufruf keine Fehlermeldung bringt, dass der Ordner schon da ist.

Frank
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: DF6GL am Dezember 30, 2012, 20:42:12
Hallo,


prüfe VOR dem Aufruf (mit DIR() z. B.)  , ob es das/die Verzeichnis(se) schon gibt oder nicht...
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: Mykis am Dezember 30, 2012, 21:23:48
 Vielen Dank ihr Beiden,

meine Vorbereitung zur Datensicherung sieht jetzt so aus und funktioniert!

If Dir(laufwerk & "\" & NameArchivRoot & "\" & NameArchivVerz & "\" & publ_ArtgruppeSysName & "\*.*") = "" Then

MkDir laufwerk & "\" & NameArchivRoot
MkDir laufwerk & "\" & NameArchivRoot & "\" & NameArchivVerz
MkDir laufwerk & "\" & NameArchivRoot & "\" & NameArchivVerz & "\" & publ_ArtgruppeSysName

End If


Guten Rutsch
Frank
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: bahasu am Dezember 30, 2012, 21:50:31
Hi,

ist auszuschließen, dass es den untersten Ordner noch NICHT gibt, dass es aber die beiden darüber liegenden Ordner gibt?
Ansonsten würde ich die Dir-Prüfung bei jedem Ordner machen.

Harald
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: Mykis am Dezember 30, 2012, 21:59:22
Danke für diesen Hinweis.
Ist zwar unwahrscheinlich, aber ich werde es noch einbauen.

Frank
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: ebs17 am Dezember 30, 2012, 23:23:54
If Dir(laufwerk & "\" & NameArchivRoot & "\" & NameArchivVerz & "\" & publ_ArtgruppeSysName & "\*.*") = "" Then
Das ist eine Prüfung auf Dateien (mindestens eine), die in dem dritten Unterordner liegen. Wenn diese Prüfung True ergibt, heißt das, die Ordner sind vorhanden (sonst Fehler!), aber es liegen keine Dateien drin.

Eine Prüfung auf ein Verzeichnis würde etwa so aussehen:
If Dir(Verzeichnispfad, vbDirectory) = vbNullstring Then
   MakeSureDirectoryPathExists Verzeichnispfad
End If

Siehe dazu MakeSureDirectoryPathExists (http://www.vbarchiv.net/api/api_makesuredirectorypathexists.html)

MfGA
ebs
Titel: Re: CreateObject("Scripting.FileSystemObject")
Beitrag von: Mykis am Dezember 31, 2012, 12:04:25
Hallo ebs,

diese Prüfung auf ein Verzeichnis ist natürlich komfortabler, berücksichtigt auch einzelne fehlende Ordner und überschreibt auch alte Daten, was für mich wichtig ist.

Vielen Dank und guten Rutsch
Frank