Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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

Datei speichern in Pfad

Datei speichern in Pfad
02.02.2021 12:33:26
Thomas
Guten Tag werte Expertinnen und Experten!
Ich habe ein Problem beim speichern einer Datei in einem Pfad.
Sowohl der Pfad als auch die Datei werden korrekt angelegt nur leider wird die Datei nicht IN das Verzeichnis gelegt sondern immer nur "daneben"...
Für euch sicherlich ein lächerliches Problem, für mich aktuell aber ein unüberwindbaren Hindernis :(
Hier mein verwendeter code:

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:\Users\tages\Documents\Test Makro\" & "PG" & ActiveSheet.Range("D8") & " " &  _
_
_
ActiveSheet.Range("D1") & " " & ActiveSheet.Range("D2") & " " & ActiveSheet.Range("D3").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 & " " & Format(Date, "YYYY-MM-DD"), _
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

Vielen Dank im Voraus TB

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei speichern in Pfad
02.02.2021 13:09:41
peterk
Hallo

ActiveWorkbook.SaveAs Filename:=strOrdner & " " & Format(Date, "YYYY-MM-DD")
Hier fehlt ein "\" im Filenamen.
Anmerkung: Du speicherst den File mit einem Datumsnamen, suchst aber weiter oben nach einem Filenamen aus Zelle C77.
Peter
AW: Datei speichern in Pfad
02.02.2021 13:28:51
Thomas
Vielen Dank für die Antwort.
Leider bin ich was VBA angeht weitestgehend unbeleckt und "klaue" nur Codes die soweit mir Möglich auf meine Bedürfnisse anpasse.
Ich habe die Zeile jetzt dahingehen angepasst
ActiveWorkbook.SaveAs Filename:=strOrdner & " " & Format(Date, "YYYY-MM-DD") & "\", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Allerding schimpft er jetzt mit mir wegen einem Laufzeitfehler 1004
Userbild
Anzeige
AW: Datei speichern in Pfad
02.02.2021 13:45:02
Thomas
Ich habe selber gerade erst festgestellt das der Code aus diesem Forum stammt.
https://www.herber.de/forum/archiv/1596to1600/1599956_Ordner_erstellen_ueber_Makro.html
Es handelt sich um ein Datenblatt für einen Kunden und letztlich möchte ich die geöffnete Datei unter einem Pfad speichern der sich aus einem festen Stammtverzeichniss (C:\Users\tages\Dropbox\Abrechnung\2021\Kunden) und den Werten aus den Zellen D1, D2 D3 & D8 ergibt.
Ist der Pfad nicht vorhanden soll er erstellt werden und die Datei da rein gespeichert werden. Der Dateiname soll gleich dem Pfad sein.
Das Marco soll durch einen Button ausgeführt werden welcher im Idealfall nur einmal betätigt werden kann.
Anzeige
AW: Datei speichern in Pfad
02.02.2021 14:08:22
peterk
Hallo
Lade Bitte Deine Deine Excelmappe hoch, dann kann ich die entprechenden Änderungen vornehmen.
Peter
AW: Datei speichern in Pfad
02.02.2021 14:51:55
Thomas
Das wäre wirklich ein Traum
Da die Datei viel zu groß zum Upload war hier eine stark vereinfachte Version
https://easyupload.io/f3d1k5
AW: Datei speichern in Pfad
02.02.2021 15:11:44
peterk
Hallo
In Deinem Beispiel wäre der Ordnerpfad
C:\Users\tages\Documents\Test Makro\PG2 Frau Tuple Blinde
d.h. das Makro sollte den Unterordner "PG2 Frau Tuple Blinde" erzeugen und dann wirklich das Excelfile dort abspeichern (oder doch nur eine Kopie?). Wie soll der File dann heissen?
Peter
Anzeige
AW: Datei speichern in Pfad
02.02.2021 15:29:40
Thomas
Ausgangslage ist das ich in einer Kundenübersicht einen neuen Kunden anlegen will.
Dazu will ich in der Übersicht ebenfall einen Button "Kunden anlegen " haben.
Wenn ich diesen betätige wird eine Datei "Blanko Einzelrechnnug" aus dem festen Pfad "C:\Users\tages\Dropbox\Abrechnung\2021\Sicherheitskopie" geöffnet.
In der nun geöffneten Datei werden dann alle Daten eingegeben.
Das Makro um das es hier geht soll nun im Stammordner "C:\Users\tages\Dropbox\Abrechnung\2021\Kunden" für jeden neuen Kunden einen eigenen Ordner anlegen der sich aus den benannten Zellen ergibt "PG2 Frau Tuple Blinde". In diesen Ordner soll die Datei "PG2 Frau Tuple Blinde.xlsm" gespeichert werden.
Die ursprüngliche "Blanko Datei" muss dabei natürlich unangetastet bleiben.
Die Kundenübersicht hänge ich mal der Vollständigkei halber hier an.
https://www.herber.de/bbs/user/143524.xlsm
Anzeige
AW: Datei speichern in Pfad
02.02.2021 16:42:45
peterk
Hallo
Dieser Code ersetzt alles im Modul "anlegen".
Durch den Button "Kunden Anlegen" wird der Pfad angelegt und ein Copie der aktuellen Datei mit neuem Namen abgespeichert. Pfad muss noch angepast werden (ich teste in "C\temp\"
Modul anlegen
Option Explicit 
 
Sub speichern() 
    ' 
    ' speichern Makro 
    ' Tastenkombination: Strg+p 
    ' speichert die datei 
    ' 
     
    Dim strFilename As String 
    Dim strOrdner As String 
    Dim varOrdner 
    Dim i As Integer 
    Dim strZeichen As String 
     
    With ActiveSheet 
        strFilename = "PG" & .Range("D8") & " " & .Range("D1") & " " & .Range("D2") & " " & .Range("D3") 
        strOrdner = "C:\temp\tages\" & strFilename  ' anpassen !! 
    End With 
     
    If Not fncheckName(strFilename) Then 
        MsgBox "Der Unter-Ordner """ & strFilename & _
            """ enthält unzulässige Zeichen ( :  /  \  |  *  ?  <  > oder "" )", _
            vbOKOnly, "Prüfung Ordnername" 
        Exit Sub 
    End If 
     
    varOrdner = Split(strOrdner, "\") 
     
    strOrdner = varOrdner(0) 
     
    For i = 1 To Ubound(varOrdner) 
        strOrdner = strOrdner & Application.PathSeparator & varOrdner(i) 
        If Dir(strOrdner, vbDirectory) = "" Then 
            MsgBox "Unterordner """ & varOrdner(i) & """ nicht vorhanden, wird angelegt!", _
                vbOKOnly, "Anlegen Ordnername" 
            VBA.MkDir Path:=strOrdner 
        End If 
    Next i 
     
    strFilename = strFilename & ".xlsm" 
     
    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.SaveCopyAs Filename:=strOrdner & "\" & strFilename 
            Application.DisplayAlerts = True 
             
        End If 
    Else 
        ActiveWorkbook.SaveCopyAs Filename:=strOrdner & "\" & strFilename 
    End If 
 
             
End Sub 
 
 
Function fncheckName(ByVal strName, Optional strZ As String) As Boolean 
    Dim arrZeichen 
    Dim i As Integer 
     
    arrZeichen = Array(":", "/", "\", "|", """", "?", "*", "<", ">") 
    fncheckName = 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 fncheckName = False 
End Function 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Peter
Anzeige
AW: Datei speichern in Pfad
02.02.2021 18:32:47
Thomas
WOW, perfekt!
Vielen Dank!!!
Ich weiß nicht ob ich einen extra Threat öffnen soll um ein weiteres Problem anzusprechen...
In der hochgeladenen Datei gibt es das Modul drucken.
Wird dieses ausgeführt kommt die Frage nach dem zu druckenden Monat.
Nach der Eingabe von zB. "Jan" für Januar werden die entsprechenden Sheets LJan und RJan ausgedruckt.
Ich würde nun gerne erreichen das neben dem Ausdruck gleichzeitig eine pdf "Jan" der gleichen sheets in dem Kundenordner erstellt wird.
Ist das realisierbar?
Sollte ich dafür einen seperaten Beitrag erstellen?
Nochmals vielen vielen Dank!!!
Anzeige
AW: Datei speichern in Pfad
03.02.2021 11:20:28
peterk
Hallo
Kann ich Dir machen ;-)
Peter
AW: Datei speichern in Pfad
03.02.2021 14:11:46
peterk
Hallo
Preview/Drucken/PDF
Sub DruckenVieleTabellenV1()

    Dim mm As String
    Dim strFilename As String
    Dim StrOrdner As String
    Dim ws As Worksheet
    Dim WsFound As Long
    
    With Worksheets("Stammdaten")
        strFilename = "PG" & .Range("D8") & " " & .Range("D1") & " " & .Range("D2") & " " & .Range("D3")
        StrOrdner = "C:\temp\tages\" & strFilename  ' anpassen !! 
    End With
    
    If Dir(StrOrdner, vbDirectory) = "" Then   ' Directory/File wurde noch nicht angelegt 
        MsgBox "Unterordner """ & StrOrdner & """ nicht vorhanden, Bitte zuerst angelegen!", _
            vbOKOnly, "Anlegen Ordnername"
        Exit Sub
    Else
        WsFound = 0
        mm = UCase(InputBox("Welcher Monat soll gedruckt werden?"))
        For Each ws In ThisWorkbook.Worksheets
            If UCase(ws.Name) = "R" & mm Then WsFound = WsFound + 1
            If UCase(ws.Name) = "L" & mm Then WsFound = WsFound + 1
        Next ws
        If WsFound <> 2 Then
            MsgBox "Arbeitblätter """ & "R" & mm & "/" & "L" & mm & """ nicht vorhanden!", _
                vbOKOnly, "Drucken Arbeitsblätter"
            Exit Sub
        End If
    End If
   
    Worksheets(Array("R" & mm, "L" & mm)).PrintOut Preview:=True
    
    Worksheets("R" & mm).ExportAsFixedFormat xlTypePDF, _
        Filename:=StrOrdner & "\" & strFilename & "_R" & mm & ".pdf"
    Worksheets("L" & mm).ExportAsFixedFormat xlTypePDF, _
        Filename:=StrOrdner & "\" & strFilename & "_L" & mm & ".pdf"

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: Datei speichern in Pfad
03.02.2021 12:08:38
Thomas
Ich bin wirklich heffauf begeistert,
leider ist in der kurzen Praxisphase ein kleines Problem aufgetreten.
Alles wird perfekt angelegt, jedoch wird auch die Blanko-Datei beim ausführen des Makros mit den eingegebenen Daten gespeichert. Wenn man sie also nach dem anlegen schließt und für einen neuen Kunden wieder öffnet, sind die letzten Eingaben wieder/noch drin.
Ich weiß ja nicht ob da nur irgendein Wert geändert werden, oder alles umgeschrieben werden muss?!
Kann man eigentlich beim Abspeichern quasi etwas am Aussehen der Datei verändern?
So das die Blanko zB im Stammdaten und Anwesenheits-sheet ingenwie deutlich farblich abweicht und die erzeugte Mappe so ist wie bisher?
Anzeige
AW: Datei speichern in Pfad
03.02.2021 12:37:34
peterk
Hallo
Bei mir wird die Blanko Datei nicht geändert, aber wenn Du beim Schliesen "Speichern" anklickst, wird die Blanko Datei natürlich überschrieben. Du kannst das verhindern indem Du in der Workbook_Open Prozedur folgende Zeile einfügst:

ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly

Damit ist Deine Blanko Datei schreibgeschützt. Aber solange Du daran arbeitest musst Du diese Zeile auskommentieren sonst kannst Du keine Änderungen vornehmen ohne den Dateinamen auch neu zu vergeben.
Peter
AW: Datei speichern in Pfad
02.02.2021 13:57:44
peterk
Hallo
StrOrdner ist dein Pfad hat aber keine "\" am Ende
z.B. C:\User\Tages\Dokuments
Willst Du jetzt in den Unterordner Dokuments einen File schreiben dann wie folgt

Filename:=strOrdner & "\" & Format(Date, "YYYY-MM-DD")
Damit erzeugst Du ein Excelfile mit Namen: 2021-02-02.xslm im Ordner Dokuments
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige