Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
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 erstellen über Makro

Ordner erstellen über Makro
03.01.2018 14:22:34
Hans
Hallo Forum,
mein Makro speichert die Datei unter diesem Namen:
C:\Test\Hamburg 03.01.2017\Dateiname.xlsm
Das geht prima, nur einen anderen Ordner kann ich damit nicht erstellen....
Ich habe in Zelle C80 über VERKETTEN einen Ordnernamen angelegt, dieser setzt sich aus dem Ortsnamen und dem Datum zusammen. Nun bekomme diesen aber nicht in mein Makro eingebaut.
=WENN(AW4="";"";VERKETTEN(AW4;"-";TEXT($DU$4;"TT.MM.JJJJ")))
Ich hab es schon mit MkDir "C\Test\& Range("C80") versucht, bekomme aber dann immer einen Syntaxfehler...
Wie bekomme ich es hin, dass die Existenz des Ordners vorher geprüft wird ?
Was mache ich falsch ?
Hans
Hier mein Makro.......
(C:\Test\ ist vorgegeben... Sub speichern() ' speichern Makro ' Tastenkombination: Strg+p ' speichert die datei Dim strFilename As String ChDir "C:\Test\Hamburg_03.01.2018" ActiveWorkbook.SaveAs Filename:= _ "C:\Test\Hamburg_03.01.2018\" & Range("C77") & ".xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner erstellen über Makro
03.01.2018 14:34:18
ChrisL
Hi Hans
Ungetestet...
MkDir("C\Test\" & Range("C80") & "\")
cu
Chris
AW: Ordner erstellen über Makro
03.01.2018 14:44:45
Hans
Hallo Chris,
nun bekomme ich einen Fehler beim Kompilieren.
Muss ich nicht auch den hier fett Markierten Bereich irgendwie anpassen ?
Hans
Sub speichern()
' speichern Makro
' Tastenkombination: Strg+p
' speichert die datei
Dim strFilename As String
MkDir ("C:\Test\" & Range("C80") & "\")
ActiveWorkbook.SaveAs Filename:= _
"C:\Test\" & Range("C80") &\" & Range("C77") & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Anzeige
AW: Ordner erstellen über Makro
03.01.2018 14:48:01
ChrisL
"C:\Test\" & Range("C80") & "\" & Range("C77") & ".xlsm
AW: Ordner erstellen über Makro
03.01.2018 14:59:06
Hans
Moin moin,
nun wird der Ordner C:\Test\München_03.01.2018 erstellt, die Datei jedoch nicht abgespeichert...
Laufzeitfehler '75'
Fehler beim Zugriff auf Pfad/Datei
Hier das Aktuelle Makro
Das fett Markierte ist gelb hinterlegt:
Sub speichern()
' speichern Makro
' Tastenkombination: Strg+p
' speichert die datei
Dim strFilename As String
MkDir ("C:\Test\" & Range("C80") & "\")
ActiveWorkbook.SaveAs Filename:= _
"C:\Test\" & Range("C80") & "\" & Range("C77") & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Anzeige
Ordner schon vorhanden owT
03.01.2018 15:38:11
ChrisL
.
Ordner schon vorhanden
03.01.2018 15:46:22
Hans
Hallo,
JA, der Ordner C:\Test ist schon da.
Beim Klick auf Speichern, wird dann auch der Unterordner "München_03.01.2018" erstellt die Datei wird dann aber nicht abgespeichert.... Laufzeitfehler 75
Hans
Tschuldigung, war gerade Essen
Hauptordner-Unterordner-Dateiname
03.01.2018 15:53:11
Hans
Hallo noch mal,
der Hauptordner "Test" ist immer gleich... also
C:\Test
hier soll dann der Unterordner, erstellt aus der Verkettung in Zelle C80 erstellt werden....
zum Beispiel: Hamburg_18.12.2017
So dass der Pfad dann so aussieht: C:\Test\München_03.01.2018\Dateiname.xlsm
Ich hoffe man versteht mein Anliegen....
Hans
Anzeige
AW: Hauptordner-Unterordner-Dateiname
03.01.2018 16:06:20
ChrisL
Hi Hans
Dass der Hauptordner schon vorhanden ist, war mir klar. Ich hätte gedacht, dass du auch den Unterordner im Rahmen der Tests schon erstellt hast, dann kannst du den gleichen Ordner natürlich nicht noch einmal erstellen.
Der Debugger (gelbe Zeile) steht ja hier:
MkDir ("C:\Test\" & Range("C80") & "\")
Der Syntax ist grundsätzlich richtig. Ob ein korrekter Wert in C80 steht und ob du die benötigten Rechte für die Ordnererstellung hast, kann ich nicht überprüfen.
cu
Chris
AW: Hauptordner-Unterordner-Dateiname
03.01.2018 16:27:22
Hans
Hallo noch mal,
Das Verzeichnis (Ordner)
C:\Test\München_03.01.2018
wurde erstellt, nur die Datei wird nicht gespeichert...
Bin halt noch VBA Anfänger, daher schnalle ich das nicht so schnell....
Dim strFilename As String
MkDir ("C:\Test\" & Range("C80") & "\")
ActiveWorkbook.SaveAs Filename:= _
"C:\Test\" & Range("C80") & "\" & Range("C77") & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Anzeige
AW: Hauptordner-Unterordner-Dateiname
03.01.2018 16:45:04
Hans
Moin,
hab ich das richtig verstanden?
MkDir ("C:\Test\" & Range("C80") & "\") erstellt immer wieder den Ordner neu? Das muss ja nicht sein, denn diesen Ordner brauche ich nur einen Tag. Am nächsten Tag heißt er dann z.B. "München_04.01.2018"
Ich hatte es eben mal versucht, nach dem ich die Daten neu vergeben habe.
Also C77 wir so erstellt:
Prüfername / Ort / Straße / Hausnummer / Datum / Uhrzeit (daraus wird der Dateiname erstellt)
Hansen/München/Marienstraße/15/03.01.2018/16:33
Der Ordnername wird in C80 erstellt über "Ort" und "Datum"
München/03.01.2018
Sollte dann so aussehen: (Verzeichnispfad)
C:\Test\München_03.01.2018\Hansen-München-Marienstraße-15-03.01.2018-16:33.xlsm
Komischerweise geht es manchmal, manchmal halt nicht....
Nur Hausnummer ändern bringt nichts. Erst das Schließen und erneute Aufrufen dann Hausnummer ändern und dann Speichern geht....
Warum ?
Hans
Anzeige
AW: Hauptordner-Unterordner-Dateiname
03.01.2018 17:19:15
ChrisL
Hi Hans
MkDir = Make Directory = Erstelle Verzeichnis
Jedes mal, wenn du den Code ausführst, wird ein Verzeichnis erstellt.
Konzentriere dich erstmal auf die Ursachensuche für die Fehlermeldung. Ist es richtig, das der Debugger (gelbe Zeile) auf MkDir steht?
Wenn ja, ist der Dateiname resp. Hausnummer vorerst irrelevant (du kannst den Codeteil "SaveAs" zum Test auch mal löschen).
Der Fehler bei der Ordnererstellung erscheint dann, wenn der Ordner schon vorhanden ist oder immer?
cu
Chris
AW: Hauptordner-Unterordner-Dateiname
03.01.2018 19:11:54
Hans
Hi Chris,
vielen Dank für deine Hilfe.
Offenbar scheint es am Datum zu liegen. Nun habe ich die Verkettung in Zelle C80 so abgeändert, dass auch der Straßenname und die Hausnummer mit einbezogen werden.
Ist zwar blöd, da nun für jede Straße und Hausnummer ein neuer Ordner angelegt werden, aber wenn es anders nicht geht....
Hans
Anzeige
AW: Hauptordner-Unterordner-Dateiname
04.01.2018 14:33:54
fcs
Hallo Hans,
es gibt Zeichen, die für Dateinamen und Ordner nicht zulässig sind: : / \ | * ? &lt &gt und "
Das muss man vor dem Speichern/anlegen eines Ordner prüfen,um den Fehler zu vermeiden.
Bevor du einen neuen Ordner anlegst, musst du prüfen,ob er schon vorhanden ist.
Falls mehrere Unterordner möglich sind muss die gesamte Struktur geprüft und angelegt werden.
Du musst für den Dateinamen also das Format für die Uhrzeit ohne Doppelpunkt einbauen bzw. ein anderes Zeichen verwenden. Etwa wie folgt:
Gruß
Franz
Tabelle1

 BC
66PrüfernameMeier
67StraßeMarienplatz
68Hausnummer22a
69  
70  
71  
72OrtKiel
73Datum04.01.2018
74Uhrzeit15:30
75  
76  
77DateinameMeier-Kiel-Marienplatz-22a-04.01.2018-15_30
78  
79  
80UnterordnerKiel_04.01.2018
81  

Formeln der Tabelle
ZelleFormel
C77=C66&"-"&C72&"-"&C67&"-"&C68&"-"&TEXT(C73;"TT.MM.JJJJ")&"-"&TEXT(C74;"hh""_""mm")
C80=C72&"_"&TEXT(C73;"TT.MM.JJJJ")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
angepasstes Makro zum Speichern:
Sub speichern()
' speichern Makro
' Tastenkombination: Strg+p
' speichert die datei
Dim strFilename As String
Dim strOrdner As String, varOrdner, i As Integer, strZeichen As String
strOrdner = "C:\Test\" & ActiveSheet.Range("C80").Text
varOrdner = Split(strOrdner, "\")
strOrdner = varOrdner(0)
For i = 1 To UBound(varOrdner)
If fncheckFoldername(varOrdner(i)) Then
strOrdner = strOrdner & Application.PathSeparator & varOrdner(i)
If Dir(strOrdner, vbDirectory) = "" Then
VBA.MkDir Path:=strOrdner
End If
Else
MsgBox "Der Unter-Ordner """ & varOrdner(i) _
& """ enthält unzulässige Zeichen ( :  /  \  |  *  ?   oder "" )", _
vbOKOnly, "Prüfung Ordnername"
Exit Sub
End If
Next i
strFilename = ActiveSheet.Range("C77").Text & ".xlsm"
If fncheckFilename(strFilename, strZeichen) Then
If Dir(strOrdner & "\" & strFilename)  "" Then
If MsgBox("vorhandene Datei: " & strFilename & vbLf & "im Ordner: " & strOrdner &  _
vbLf _
& "überschreiben?", vbQuestion + vbOKCancel, "Datei speichern") = vbOK Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strOrdner & "\" & strFilename, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Application.DisplayAlerts = True
End If
Else
ActiveWorkbook.SaveAs Filename:=strOrdner & "\" & strFilename, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
Else
MsgBox "Der Dateiname """ & strFilename _
& """ enthält unzulässige Zeichen  " & strZeichen, _
vbOKOnly, "Prüfung Dateiname"
End If
End Sub
Function fncheckFilename(ByVal strName, Optional strZ As String) As Boolean
Dim arrZeichen
Dim i As Integer
arrZeichen = Array(":", "/", "\", "|", """", "?", "*", "")
fncheckFilename = True
For i = LBound(arrZeichen) To UBound(arrZeichen)
If InStr(1, strName, arrZeichen(i)) > 0 Then
strZ = strZ & "  " & arrZeichen(i)
End If
Next
If strZ  "" Then fncheckFilename = False
End Function
Function fncheckFoldername(ByVal strName, Optional strZ As String) As Boolean
Dim arrZeichen
Dim i As Integer
arrZeichen = Array(":", "/", "\", "|", """", "?", "*", "")
fncheckFoldername = True
For i = LBound(arrZeichen) To UBound(arrZeichen)
If InStr(1, strName, arrZeichen(i)) > 0 Then
strZ = strZ & "  " & arrZeichen(i)
End If
Next
If strZ  "" Then fncheckFoldername = False
End Function

Anzeige
AW: Hauptordner-Unterordner-Dateiname
04.01.2018 13:56:16
Rudi
Hallo,
Sollte dann so aussehen: (Verzeichnispfad)
C:\Test\München_03.01.2018\Hansen-München-Marienstraße-15-03.01.2018-16:33.xlsm

Du musst auch darauf achten, dass der Dateiname keine unzulässigen Zeichen enthält (16:33)
Gruß
Rudi
AW: Ordner erstellen über Makro
04.01.2018 14:17:18
Rudi
Hallo,
Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal Pfad As String) As Long

Sub Pfad_anlegen()
'Ist das Verzeichnis nicht wie angegeben vorhanden, wird es angelegt.
MakeSureDirectoryPathExists "C:\temp\test\test\test\"
End Sub
Gruß
Rudi
Anzeige

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige