Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ordner erstellen mit VBA ( Code anpassen )

Ordner erstellen mit VBA ( Code anpassen )
13.12.2005 21:02:44
Hans-Georg
Hallo,
mit Hilfe des Forums habe ich einen VBA Code erstellt, num möchte ich diesen Code so anpassen, dass immer ein neuer Ordner erstellt wird in dem dann die Datei abgespeichert wird.
Momentan läuft der Code so :
Die Datei wird gespeichert unter
C:\ECS - AUTO\Name-Vorname-Straße-PLZ-Ort-Kundennummer-Kennzeichen-Datum.xls
Wenn der Name noch nicht vorhanden ist, soll Excel einen Ordner erstellen mit dem Namen und der Kundennummer, ist der Ordner aber vorhanden, soll die Datei automatisch dort hinein gespeichert werden.
Ist das möglich ? und wie mach ich das ?
Hier mein Code :

Private Sub CommandButton2_Click()
Dim SpeicherName As String
SpeicherName = "C:\ECS - Auto\" & Range("A8") & "-" & Range("A9") & "-" & Range("A11") & "-" & Range("H11") & "-" & Range("BA7") & "-" & Range("BA9") & "-" & Range("BA11") & ".xls"
ActiveWorkbook.SaveAs Filename:=SpeicherName
End Sub

Vielen Dank für Eure Hilfe
Hans-Georg
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner erstellen mit VBA ( Code anpassen )
13.12.2005 22:04:35
Josef
Hallo Hans-Georg!
Am einfachsten so!
Option Explicit

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

Private Sub CommandButton2_Click()
Dim SpeicherName As String

SpeicherName = "C:\ECS - Auto\" & Range("A8") & "-" & Range("A9") & "-" & Range("A11") & "-" & Range("H11") & "-" & Range("BA7") & "-" & Range("BA9") & "-" & Range("BA11") & ".xls"

MakeSureDirectoryPathExists SpeicherName

ActiveWorkbook.SaveAs Filename:=SpeicherName
End Sub



'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
Fehler beim Speichern
13.12.2005 22:18:04
Hans-Georg
Hallo Rainer,
ich bekomme folgende Fehlermeldung : Sub oder Funktion nicht definiert und dann wird mir diese Stelle des Codes angezeigt :
MakeSureDirectoryPathExists
MfG
HANS-GEORG
Sorry, Anwort war für Sepp !! owT.
13.12.2005 22:19:23
Hans-Georg
AW: Fehler beim Speichern
13.12.2005 22:32:06
Josef
Hallo Hans-Georg!
Die API-Funktion hast du aber schon deklariert?
Genauer sollte es eigentlich so lauten.
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
  ByVal DirPath As String) As Long

Private Sub CommandButton2_Click()
Dim SpeicherName As String
Dim result As Long

SpeicherName = "C:\ECS - Auto\test\" & Range("A8") & "-" & Range("A9") & "-" & Range("A11") & "-" & Range("H11") & "-" & Range("BA7") & "-" & Range("BA9") & "-" & Range("BA11") & ".xls"

result = MakeSureDirectoryPathExists(SpeicherName)

If result <> 0 Then
  ActiveWorkbook.SaveAs Filename:=SpeicherName
Else
  MsgBox "Pfad konnte nicht erstellt werden!", 48, "Hinweis"
End If

End Sub



'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
API Funktion
13.12.2005 22:52:11
Hans-Georg
Hallo Sepp,
ich hab mal in der Hilfe von Excel nachgelesen aber API Funktion hab ich nicht gefunden, daher weiss ich auch nicht, ob diese schon deklariert wurde. Ich habe versucht den Code so in meinen Schaltbutton zu übernehmen, das geht aber meißtens schief, wenn ich den vorhandenen Code lösche, dann stellt sich ein Teil Deines Codes in den Code des Schaltbutton 1. ein. Warum weiß ich aber nicht.
Ich werde es morgen noch einmal versuchen. Vielen Dank erst einmal und gute Nacht !
MfG
Hans-Georg
Anzeige
AW: API Funktion
13.12.2005 22:57:49
Josef
Hallo Hans Georg!
Du kopierst warscheinlich alles in die Sub deines Buttons;-((
So sollte es aussehen!
Option Explicit

'API Deklaration~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
  ByVal DirPath As String) As Long
'Ende API Deklaration~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


'Der Code deines CommandButton
Private Sub CommandButton2_Click()
Dim SpeicherName As String
Dim result As Long

SpeicherName = "C:\ECS - Auto\test\" & Range("A8") & "-" & Range("A9") & "-" & Range("A11") & "-" & Range("H11") & "-" & Range("BA7") & "-" & Range("BA9") & "-" & Range("BA11") & ".xls"

result = MakeSureDirectoryPathExists(SpeicherName)

If result <> 0 Then
  ActiveWorkbook.SaveAs Filename:=SpeicherName
Else
  MsgBox "Pfad konnte nicht erstellt werden!", 48, "Hinweis"
End If

End Sub

'Ende Code CommandButton

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: API Funktion
14.12.2005 05:28:57
Nepumuk
Hallo Sepp,
du hast den Dateinamen in der Variablen "SpeicherName" mit drin. Daher die Fehlermeldung.
Gruß
Nepumuk
AW: API Funktion
14.12.2005 07:33:12
Josef
Hallo Max!
Also bei mir wird, auch mit angehängtem Dateinamen, der Pfad korrekt erstellt!
Die Funktion heist ja auch "MakeSureDirectoryPathExists"
Gruß Sepp
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ordner erstellen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA einen Ordner zu erstellen und darin eine Datei zu speichern, befolge diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.
  3. Deklariere die API-Funktion: Füge den folgenden Code in das Modul ein, um die Funktion MakeSureDirectoryPathExists zu deklarieren:

    Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
       ByVal DirPath As String) As Long
  4. Erstelle den VBA-Code für den Button: Füge folgenden Code in die Subroutine deines CommandButtons ein:

    Private Sub CommandButton2_Click()
       Dim SpeicherName As String
       Dim result As Long
    
       SpeicherName = "C:\ECS - Auto\" & Range("A8") & "-" & Range("A9") & "-" & _
                      Range("A11") & "-" & Range("H11") & "-" & Range("BA7") & _
                      "-" & Range("BA9") & "-" & Range("BA11") & ".xls"
    
       result = MakeSureDirectoryPathExists(SpeicherName)
    
       If result <> 0 Then
           ActiveWorkbook.SaveAs Filename:=SpeicherName
       Else
           MsgBox "Pfad konnte nicht erstellt werden!", 48, "Hinweis"
       End If
    End Sub
  5. Speichern und Ausführen: Speichere deine Datei und führe das Makro aus, um den Ordner zu erstellen und die Datei zu speichern.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Sub oder Funktion nicht definiert": Diese Fehlermeldung tritt auf, wenn die API-Funktion nicht korrekt deklariert wurde. Stelle sicher, dass die Deklaration für MakeSureDirectoryPathExists im Modul vorhanden ist.

  • Ordner wird nicht erstellt: Überprüfe den Pfad in der SpeicherName-Variable. Stelle sicher, dass du die richtigen Zellreferenzen verwendest.


Alternative Methoden

Wenn du keinen API-Zugriff verwenden möchtest, kannst du auch die MkDir-Funktion verwenden, um Ordner zu erstellen:

Sub OrdnerErstellen()
    Dim OrdnerPfad As String
    OrdnerPfad = "C:\ECS - Auto\" & Range("A8") & "-" & Range("A9")

    On Error Resume Next
    MkDir OrdnerPfad
    On Error GoTo 0
End Sub

Praktische Beispiele

  1. Erstellen eines Hauptordners:

    Dim HauptOrdner As String
    HauptOrdner = "C:\ECS - Auto"
    If Dir(HauptOrdner, vbDirectory) = "" Then MkDir HauptOrdner
  2. Erstellen eines Unterordners:

    Dim UnterOrdner As String
    UnterOrdner = HauptOrdner & "\" & "Kundenordner"
    If Dir(UnterOrdner, vbDirectory) = "" Then MkDir UnterOrdner
  3. Speichern einer Datei in einem neuen Ordner: Kombiniere die oben genannten Beispiele mit dem SpeicherName-Code, um die Datei in dem neuen Ordner zu speichern.


Tipps für Profis

  • Fehlerbehandlung implementieren: Nutze On Error-Anweisungen, um Fehler beim Erstellen von Ordnern abzufangen.

  • Variablen sinnvoll benennen: Verwende aussagekräftige Namen für deine Variablen, um den Code leserlicher zu machen.

  • Verzeichnisstruktur automatisieren: Erstelle eine hierarchische Ordnerstruktur, um Dateien besser zu organisieren.


FAQ: Häufige Fragen

1. Wie kann ich einen Ordner in Excel erstellen, wenn er nicht vorhanden ist?
Verwende die MakeSureDirectoryPathExists-Funktion, um sicherzustellen, dass der Ordner existiert, bevor du die Datei speicherst.

2. Funktioniert dieser Code auch in Excel 365?
Ja, der Code sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

3. Was ist der Unterschied zwischen MkDir und MakeSureDirectoryPathExists?
MkDir erstellt nur einen Ordner, während MakeSureDirectoryPathExists sicherstellt, dass der gesamte Pfad existiert, einschließlich aller übergeordneten Ordner.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige