Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ordner dynamisch erstellen

Ordner dynamisch erstellen
28.07.2021 07:33:21
Tim
Guten Morgen Zusammen,
gibt es in VBA die Möglichkeit, dass wenn ich einen Button in einer Userform klicke mir automatisch ein Ordner auf meinem Desktop erstellt wird. Der Ordner sollte folgenden Namen haben Test"heutiges Datum".
Mit der Methode hab ich den Ordner erstellen können, nur wie gebe ich das heutige Datum dynamisch mit ?
pfad = "C:\User\Desktop\Test"
MkDir pfad
Vielen Dank euch !

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 07:49:57
Nepumuk
Hallo Tim,
so:

pfad = "C:\User\Desktop\Test" & CStr(Date)
Gruß
Nepumuk
AW: Ordner dynamisch erstellen
28.07.2021 07:51:26
Hajo_Zi
pfad = "C:\User\Desktop\Test\" & Format(Date, "yy_mm_dd")
GrußformelHomepage
AW: Ordner dynamisch erstellen
28.07.2021 09:08:11
Tim
Hallo Hajo,
es hat geklappt vielen Dank dafür :)
noch eine Fragen: wenn ich jetzt einen Ordner mit dem Datum erstelle und in den Ordner dynamisch Dateien ablegen möchte. Gibt es dafür eine Lösung in VBA ?
Nochmal die Steps:
- Ordner anlegen mit heutigem Datum
- Dateien aus Verzeichnis auswählen
- Ausgewählte Datei in den zuvor erstellten Ordner abspeichern
Mein Code:
Sub Ordner_erstellen_files_abspeicher_umbennen()
Dim pfad As String
Dim strdatei1 As String
'Ordner wird angelegt
pfad = "C:\Users\Test" & Format(Date, "dd_mm_yy")
MkDir pfad
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then
strdatei = .SelectedItems(1)
End If
End With
If strdatei "" Then
Workbooks.Open strdatei
End If
'If fNameAndPath = False Then Exit Sub
'ActiveWorkbook.SaveAs ("C:\Users\Test & (Format(Date, ?"dd_mm_yy ?"))
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 09:12:32
Hajo_Zi
benutze den Makrorecorder.
ActiveWorkbook.SaveAs Filename:= _
"W:\Eigene Dateien\Hajo\Internet\Test\2021\Woche\Forum 30.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
Gruß Hajo
AW: Ordner dynamisch erstellen
28.07.2021 10:16:38
Tim
ich komm leider nicht weiter,
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\\?Test 28_07_21?\1Diagram.xlsx", FileFormat _
:=xlOpenXMLWorkbookMacroEnabled
ich möchte ja das File in den Ordner abspeichern, der zuvor von mir erstellt wurde.
Wenn ich jetzt ein Tag später einen Ordner mit dem Datum 29_07_2021 erstelle, dann soll es automatisch dort das File abspeichern.
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 10:25:12
Hajo_Zi
Du möchtest also nicht den MNakrorecorder benutzen?
FileFormat:= ist falsch.
Da ich nicht für den Papierkorb schreibe bin ich raus.
Viel Erfolg.
Gruß Hajo
AW: Ordner dynamisch erstellen
28.07.2021 10:26:47
Nepumuk
Hallo Tim,
so?

Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Public Sub Test()
Dim strPath As String
strPath = Environ$("USERPROFILE") & "\Desktop\Test" & Format$(Date, "dd_mm_yyyy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Call ThisWorkbook.SaveAs(Filename:=strPath & "1Diagram.xlsx", FileFormat:=xlOpenXMLWorkbook)
End Sub
Gruß
Nepumuk
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 10:58:10
Tim
Hallo Nepumuk,
in einem Modul geht es nur meine VBA Kenntnisse reichen nicht um das in den Code zu integrieren :(

Sub Ordner_erstellen_files_abspeicher_umbennen()
Dim pfad As String
Dim strdatei1 As String
pfad = "C:\Users\101\Test " & Format(Date, "dd_mm_yy")
MkDir pfad
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads"
.Filters.Add "Arbeitsmappen", "*.xls*", 1
If .Show = -1 Then
strdatei = .SelectedItems(1)
End If
End With
If strdatei  "" Then
Workbooks.Open strdatei
End If
Dim strPath As String
strPath = Environ$("USERPROFILE") & "\Test" & Format$(Date, "dd_mm_yyyy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Call ThisWorkbook.SaveAs(Filename:=strPath & "Diagram.xlsx", FileFormat:=xlOpenXMLWorkbook)
End Sub

Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 11:13:25
Nepumuk
Hallo Tim,
das sollte in deinem Modul stehen:

Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Public Sub Ordner_erstellen_files_abspeicher_umbennen()
Dim strPath As String
Dim strFile As String
Dim objWorkbook As Workbook
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
End With
If strFile  vbNullString Then
strPath = "C:\Users\101\Test " & Format$(Date, "dd_mm_yy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "Diagram.xlsx", FileFormat:=xlOpenXMLWorkbook)
Set objWorkbook = Nothing
End If
End Sub
Gruß
Nepumuk
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 11:44:47
Tim
Vielen Dank Nepumuk es klappt :)
Da ich jetzt nicht nur eine Datei auswähle und abspeichere sondern 4, ist die Frage ob du noch Tipps für mich hast. Da der Code sehr lange ist und die Excel Mappen offen bleiben.
Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long

Public Sub Ordner_erstellen_files_abspeicher_umbennen()
Dim strPath As String
Dim strFile As String
Dim objWorkbook As Workbook
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
End With
If strFile  vbNullString Then
strPath = "C:\Users\101\Test " & Format$(Date, "dd_mm_yy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "01Process", FileFormat:=xlOpenXMLWorkbook)
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
End With
If strFile  vbNullString Then
strPath = "C:\Users\101\Test " & Format$(Date, "dd_mm_yy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "02Process", FileFormat:=xlOpenXMLWorkbook)
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
End With
If strFile  vbNullString Then
strPath = "C:\Users\101\NoC " & Format$(Date, "dd_mm_yy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "03Document", FileFormat:=xlOpenXMLWorkbook)
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
End With
If strFile  vbNullString Then
strPath = "C:\Users\101\NoC " & Format$(Date, "dd_mm_yy") & "\"
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "04Document", FileFormat:=xlOpenXMLWorkbook)
Set objWorkbook = Nothing
End If
End Sub

Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 12:05:35
Nepumuk
Hallo Tim,
kürzer geht es nicht. (Lange Codes haben 1.000 Zeilen)

Option Explicit
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Public Sub Ordner_erstellen_files_abspeicher_umbennen()
Dim strPath As String
Dim strFile As String
Dim objWorkbook As Workbook
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
strPath = "C:\Users\101\Test " & Format$(Date, "dd_mm_yy") & "\"
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Title = "Bitte Report auswählen"
.InitialFileName = "C:\Users\101\Downloads\"
.FilterIndex = 2
If .Show Then strFile = .SelectedItems(1)
If strFile  vbNullString Then
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "01Process", FileFormat:=xlOpenXMLWorkbook)
Call objWorkbook.Close
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
If .Show Then strFile = .SelectedItems(1)
If strFile  vbNullString Then
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "02Process", FileFormat:=xlOpenXMLWorkbook)
Call objWorkbook.Close
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
strPath = "C:\Users\101\NoC " & Format$(Date, "dd_mm_yy") & "\"
If .Show Then strFile = .SelectedItems(1)
If strFile  vbNullString Then
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "03Document", FileFormat:=xlOpenXMLWorkbook)
Call objWorkbook.Close
Set objWorkbook = Nothing
End If
' Öffne das Downloadverzeichnis und wähle File aus, welches in den Ordner verschoben werden soll.
If .Show Then strFile = .SelectedItems(1)
If strFile  vbNullString Then
Call MakeSureDirectoryPathExists(strPath)
Set objWorkbook = Workbooks.Open(Filename:=strFile)
Call objWorkbook.SaveAs(Filename:=strPath & "04Document", FileFormat:=xlOpenXMLWorkbook)
Call objWorkbook.Close
Set objWorkbook = Nothing
End If
End With
End Sub
Gruß
Nepumuk
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 12:11:36
Tim
Danke :) Ich versuche gerade die Sub durch einen Button auf einer Userform zu starten. Es taucht aber ständig der Fehler auf : Compile error Sub or Function not definied !
' Button in der Userform

Private Sub FolderButton_Click()
Call Ordner_erstellen_files_abspeicher_umbennen  ' Sub mit Funktion
End Sub

AW: Ordner dynamisch erstellen
28.07.2021 12:17:03
Nepumuk
Hallo Tim,
dazu kann ich ohne die Mappe nichts sagen.
Gruß
Nepumuk
AW: Ordner dynamisch erstellen
28.07.2021 13:53:27
Tim
wird später hochgeladen :)
noch ein anderer Punkt:
Jetzt hab ich 4 Excel Mappen in dem Ordner, der angelegt wurde, abgespeichert.
Mit dem Code fasse ich die 4 Excel Mappe zusammen zu einer und die soll dann auch in dem Ordner abgespeichert werden. Hast du dazu noch eine Idee, danke :)
Workbooks.Add
Dim Zielarbeitsmappe As Object
Dim QuellenArbeitsmappe As Object
Dim pfad As String
Dim Datei As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Zielarbeitsmappe = ActiveWorkbook
' Pfad
pfad = InputBox("Pfad eingeben", "Pfad")
' Dateien
Datei = Dir(CStr(pfad & "*.xlsx*"))
Do While Datei ""
Set QuellenArbeitsmappe = Workbooks.Open(pfad & Datei, False, True)
QuellenArbeitsmappe.Sheets().copy after:=Zielarbeitsmappe.Sheets(Zielarbeitsmappe.Sheets.Count)
Zielarbeitsmappe.Sheets(Zielarbeitsmappe.Sheets.Count).Name = Datei
QuellenArbeitsmappe.Close
Datei = Dir()
Loop
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Zielarbeitsmappe = Nothing
Set QuellenArbeitsmappe = Nothing
' Hier soll der code stehen der mir das neu erstellte Workbook in dem selben Ordner abspeichert.
Call objWorkbook.SaveAs(Filename:=strPath & "", FileFormat:=xlOpenXMLWorkbook) ' das hab ich schon versucht klappt aber nicht
End Sub
Anzeige
AW: Ordner dynamisch erstellen
28.07.2021 15:20:45
Nepumuk
Hallo Tim,
teste mal:

Option Explicit
Public Sub test()
Dim Zielarbeitsmappe As Workbook
Dim QuellenArbeitsmappe As Workbook
Dim Pfad As String
Dim Datei As String
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Set Zielarbeitsmappe = Workbooks.Add
' Pfad
Pfad = InputBox("Pfad eingeben", "Pfad")
' Dateien
Datei = Dir$(Pfad & "*.xlsx")
Do Until Datei = vbNullString
Set QuellenArbeitsmappe = Workbooks.Open(Filename:=Pfad & Datei, _
UpdateLinks:=0, ReadOnly:=True)
With Zielarbeitsmappe
Call QuellenArbeitsmappe.Sheets().Copy(After:=.Sheets(.Sheets.Count))
.Sheets(.Sheets.Count).Name = Datei
End With
Call QuellenArbeitsmappe.Close(SaveChanges:=False)
Datei = Dir$
Loop
Call Zielarbeitsmappe.SaveAs(Filename:=Pfad & "Dateiname", _
FileFormat:=xlOpenXMLWorkbook)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Set Zielarbeitsmappe = Nothing
Set QuellenArbeitsmappe = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: Ordner dynamisch erstellen
02.08.2021 10:55:33
Dom
Hallo Nepumuk,
hier ist meine Mustermappe. Ich bekomme es nicht hin, dass mit klick auf dem Button in der Userform die Sub's ausgeführt werden.
https://www.herber.de/bbs/user/147415.xlsm
Vielen Dank im Voraus !!
Gruß Tim

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige