Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Cyberhunter am November 01, 2016, 14:53:10

Titel: Ordner per VBA erstellen
Beitrag von: Cyberhunter am November 01, 2016, 14:53:10
Hallo zusammen,

ich kann mal ein wenig Hilfe gebrauchen, da meine VBA Kenntnisse gen Null gehen.
Ich möchte aus Access (Formular) heraus im Filesystem Ordner erstellen. Dazu habe ich auch schon VBA Code gefunden:

Private Sub Jahr_anlegen_Click()
'prüfen ob ein Ordner vorhanden ist und falls nicht
'fragen ob Ordner erstellt werden soll
Dim Ord As String
Dim Antwort As Integer

Ord = "\\network\Folder\SubFolder\etc\" & [Folder]

  If Dir(Ord, vbDirectory) <> "" Then
      MsgBox "Ordner ist schon vorhanden"
  Else
  Antwort = MsgBox("Der Ordner " & Ord & " ist nicht vorhanden." _
          & vbNewLine _
          & "soll der Ordner angelegt werden?!", vbYesNo)
      If Antwort = vbYes Then
'Falls kein LW angegeben ist, erstellt die MkDir-Anweisung
'den neuen Ordner auf dem aktuellen LW.
'LW wurde aber durch "C:\xyz\" festgelegt
      MkDir Ord
      MsgBox "Ordner " & Ord & " angelegt"
      Else
      MsgBox "Es wurden keine Änderungen vorgenommen"
      Exit Sub
      End If
  End If
End Sub


Der funktioniert für den Hauptordner auch super. Nun möchte ich aber in einem Abwasch (mit diesem Klick) nicht nur den Ordner anlegen, sondern gleich dazu noch weitere fünf Unterordner.
z.B:
\Ordner\
und darunter
\01_Unterordner
\02_Unterordner
etc.

Wie muss ich den Code erweitern? Einfach nur noch entsprechend weitere Male mit angepassten Pfad hat nicht funktioniert.

Gruß
Olaf
Titel: Re: Ordner per VBA erstellen
Beitrag von: MzKlMu am November 01, 2016, 14:57:20
Hallo,
Du musst den zuvor erstellen Ordner in der MkDir Anweisung für die Unterordner mit übergeben.
Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 09:46:52
Hallo zusammen.
Ich bin auf der Suche nach dieser Anwendung, habe aber leider einige Probleme  damit.
Kann mir evtl. einer dabei helfen? Wenn ich den Code 1:1 kopiere und in meinem Form im btn "Bilder" funktioniert das nicht.
P.s.: ich habe keine Ahnung was ich da mache :-)
Titel: Re: Ordner per VBA erstellen
Beitrag von: DF6GL am April 10, 2017, 09:57:33
Hallo,

der Pfad sollte keinen Doppelslash vor dem LW-Buchstaben haben.

Checke mal im VBA-Editor unter Extras/Verweise, ob es evtl. einen gebrochenen, bzw. fehlerhaften Verweis gibt.
Korrigiere dies, falls das zutrifft.

Ansonsten kann man mit MkDir nur jeweils einen Ordner anlegen.



Mit folgendem Code (in einem Standardmodul) kann gleichzeitig eine ganze Ordner/Unterordnerstruktur angelegt werden:

Private Declare Function apiCreateFullPath Lib "imagehlp.dll"  Alias MakeSureDirectoryPathExists" _
(ByVal lpPath As String)  As Long



Public Function fktCreateMultiPfad() as Long

    Dim strPfad As String
     strPfad = "c:\Verzeichnis1\Verzeichnis11\Verzeichnis111\Verzeichnis1111\"
     fktCreateMultiPfad = apiCreateFullPath(strPath)
End Function
Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 10:12:49
Guten Morgen Franz.
Ich habe die Doppelslash entfernt und in den Verweise nachgesehen.... kann damit aber nichts anfangen. Siehe Bild
Titel: Re: Ordner per VBA erstellen
Beitrag von: DF6GL am April 10, 2017, 10:23:12
Hallo,

habe zwischenzeitlich meinen vorherigen Post erweitert...

Die Verweise scheinen ok zu sein...

Ist in JEDEM(!) Modul im Kopfbereich

Option Explicit

angegeben?

Wenn nicht, dies nachholen und im VBA-Editor Debuggen/Kompilieren anstoßen.
Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 10:55:47
Habe nachträglich die "Option Explicit" eingefügt und Debuggen/Kompilieren durchgeführt. Kein Erfolg.
Schade, ich wollte da noch zusätzlich das ein vorhandener Ordner geöffnet bzw ein neuer Ordner erstellt wird in Abhängigkeit des im Aktuellen Form ID Feld.
Hättest du da evtl. noch einen anderen Code auf lager ?
Titel: Re: Ordner per VBA erstellen
Beitrag von: ebs17 am April 10, 2017, 12:08:37
Der Code steht doch sinngemäß da.

Du brauchst für jeden Ordner ein eigenes MakeDir, und MakeDir kann nur einen Ordner eine Ebene tiefer erstellen.

Über die Win-API MakeSureDirectoryPathExists (http://www.visualbasic-archiv.de/api/api_makesuredirectorypathexists.html) ist man da etwas schlagkräftiger.

Zitatin Abhängigkeit des im Aktuellen Form ID Feld
Einen gültigen Verzeichnispfad wirst Du wohl selber erstellen können ...
Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 13:19:07
Hmmmm, verstehe ich nicht. Ich gehe richtig davon aus, dass im Code der "Ord" das Feld ist auf welches er sich bezieht ( aus meinem Textfeld/Form/db)?

Sorry im Vorfeld für die "blöden" fragen :-), habe auch schon sehr viel versucht das zu lösen, hier und bei Google aber für mich ist das Zuviel was ich nicht begreife. Wenn ich eine Funktionierende Funktion habe macht es spaß diese zu verändern und dann geht es auch leichter das zu verstehen. Dank Euch habe ich schon mit den Makro`s die Freundschaft gekündigt :-)
Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 17:41:16
http://www.access-o-mania.de/forum/Smileys/default/cry.gif
Titel: Re: Ordner per VBA erstellen
Beitrag von: DF6GL am April 10, 2017, 19:02:33
Hallo,


wo genau liegt denn das Problem?

ZitatNun möchte ich aber in einem Abwasch (mit diesem Klick) nicht nur den Ordner anlegen, sondern gleich dazu noch weitere fünf Unterordner.


Woher bekommst Du die Namen dieser Unterordner?

Titel: Re: Ordner per VBA erstellen
Beitrag von: Icemann1970 am April 10, 2017, 21:44:32
Ich bekomme den Code nicht auf mein Formular umgesetzt.
In meinem Formular "Objekte" habe ich das Feld "GeräteNummer", das als Primärschlüssel arbeitet. Wenn ich in dem geöffnetem Formular bin möchte ich durch Klick auf Schaltfläche "Bilder" das sich ein Ordner, den ich in C:\Users\Pictures\ öffnet und einen neuen Ordner mit der Bezeichnung der aus dem geöffnetem Formular resultierender "GeräteNummer" erstellt bzw. wenn vorhanden ist öffnet.
Habe aber Probleme mit der Umsetzung, siehe Bild. Das mit dem Zitat mit 5 Unterordnern ist nicht von mir. Könnt Ihr mir helfen ?
Titel: Re: Ordner per VBA erstellen
Beitrag von: Beaker s.a. am April 11, 2017, 00:33:33
Hallo Olaf,
ich wiederhole Franz' Frage
Zitatwo genau liegt denn das Problem?
Private Declare Function apiCreateFullPath Lib "imagehlp.dll"  Alias MakeSureDirectoryPathExists" _
(ByVal lpPath As String)  As Long

Public Function fktCreateMultiPfad() as Long

    Dim Ord As String
     Ord = "c:\xyz\network\Folder\SubFolder\etc\" & [Folder]
     fktCreateMultiPfad = apiCreateFullPath(Ord)
End Function

Wenn du es unbedingt mit MkDir machen willst, setze den kompletten Pfad in einem
String zusammen, und befülle mit Split(Ord, "\") ein Array, aus dem du anschliessend
in einer Schleife die Ordner erstellst.

Dim z As Integer
Dim Ord As String
Dim DeinArray As String
Ord = "c:\xyz\network\Folder\SubFolder\etc\" & [Folder]
DeinArray = Split(Ord, "\")
For z = 0 To UBound(DeinArray)
    Ord = Ord & DeinArray(z)
    MkDir Ord
Next z


gruss ekkehard