Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1360to1364
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

Speichern nach Jahr und Monat

Speichern nach Jahr und Monat
17.05.2014 16:59:26
walter mb

Hallo zusammen,
ich habe ein Speichermenü, welches einwandfrei läuft.
Nun möchte ich das beim speichern die Datei direkt in das richtige Verzeichnis
gespeichert wird und zwar nach dem Rechnungs-Datum, dies steht immer in Zelle
"D23".
Die Rg. mit Datum 10.03.2014 sollte ins Verzeichnis Jahr 2014 und Monat 03 März
gespeichert werden.
Angefügte Muster allerdings ist dies der kompl.Pfad:
C:\_Walter\__Dokumente.Buchhaltung\Rechnungen gedruckt\2014\03 März
mfg
walter mb

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Habe Jahr und Monat getrennt
17.05.2014 19:04:44
walter mb
Hallo zusammen,
ich habe das Jahr jetzt in
Zelle L20 den Monat z.B 05 und in
Zelle M20 das Jahr 2014.
Mit den Formeln Teil und Rechts erstellt.
Vielleicht hilft dies, bin aber auch dabei mir was rauszufinden, leider habe ich über Google noch
nichts gefunden.
Da das Jahr im Verzeichnis z.B. 2014 und Pfad bei den Monatsnamen die ersten beiden Ziffern 05 z.B. für Mai hinterlegt sind, danach kommen 2 Leerzeichen und dann der Monat in Buchstaben.
mfg
walter mb

Anzeige
Mal zu Teil, Rechts,...
17.05.2014 20:50:22
Matze Matthias
Hallo Walter ,
hab hier jetzt nicht das erwartete Macro, aber Anstelle Teil / Rechts ... wäre es nicht einfacher mit
M20 = Monat(Zelle wo das Datum steht)
L20 = Jahr(Zelle wo das Datum steht)
zu nutzen?
Du solltest auch schreiben, wann das Makro ausgeführt werden soll, zB beim Beenden der Arbeitsmappe
Oder über einen Speicherbutton.
MfG Matze

Hallo Matze
17.05.2014 20:58:51
walter mb
Hallo Matze,
habe schon geändert, hast Recht.
Das Jahrdatum wird ja als erstes als Verzeichnis genutzt.
Wenn es vom nutzen ist, kann ich auch den Monat als Beschriftung rausnehmen, so das
nur z.B. 05 für Mai da steht.
gruß
walter mb

Anzeige
Sorry hatte vergessen...
17.05.2014 21:09:00
walter mb
Hallo Matze,
es soll gespeichert werden !
gruß
walter mb

AW: Speichern nach Jahr und Monat
18.05.2014 08:58:10
Hajo_Zi
Hallo Walter,
speichern unter dürfte ja nicht das Problem sein (Makrorecorder)
Der Ordner "C:\_Walter\__Dokumente.Buchhaltung\Rechnungen gedruckt\" & _
Year(Range("D23")) & "\" & Format(Range("D23"), "MM MMMM")
Das der Ordner vorhanden ist hast Du ja schon geprüft.

AW: Speichern nach Jahr und Monat
18.05.2014 09:15:54
Walter
Guten Morgen Hajo,
danke für den Hinweis.
Habe auch aufgezeichnet, möchte aber in das entsprechende Verzeichnis Jähr (2014) und Monat (05),
so wie beschrieben habe. L 20 für das Jahr und M20 für Monat.
Die beiden Werte habe ich aus aktuelles Datum Zelle D23 mittels Formel Text und Rechts .
Gruß
walte mb

Anzeige
AW: Speichern nach Jahr und Monat
18.05.2014 09:21:58
Hajo_Zi
Hallo Walter,
wenn Du es kompliziert haben möchtest, musst Du Dir das selber anpassen.
Gruß Hajo

werde gleich testen !
18.05.2014 09:21:23
Walter
Hallo Hajo,
werde gleich mal testen.
Gruß
Walter mb

AW: Speichern nach Jahr und Monat
18.05.2014 09:52:03
Tino
Hallo,
hier mal eine Variante zum testen.
Wenn der Ordner nicht vorhanden ist, wird dieser erstellt.
Private Declare Function apiCreateFullPath _
Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" _
(ByVal lpPath As String) As Long

Sub Save_Rechnung()
Dim strPath$
'Pfad 
strPath = "C:\_Walter\__Dokumente.Buchhaltung\Rechnungen gedruckt\"

With Tabelle1 'Tabelle anpassen 
    If IsDate(.Range("D23")) Then
        If .Range("D23") > 0 Then
            'Pfad Jahr 
           strPath = strPath & Year(.Range("D23").Value) & "\"
            'Pfad Monat 
           strPath = strPath & Format(.Range("D23").Value, "MM MMMM") & "\"
            'Ordner erstellen sollte dieser nicht vorhanden sein 
           apiCreateFullPath strPath
           
            'Pfad Dateiname 
           strPath = strPath & ActiveWorkbook.Name
            
            'speichern 
           ActiveWorkbook.SaveAs strPath, ActiveWorkbook.FileFormat
        End If
    End If
End With

End Sub
Gruß Tino

Anzeige
Makro läuft nicht, vielleicht weil...
18.05.2014 12:33:46
walter mb
Hallo Tino,
erst mal DANKE für das Beispiel.
Wenn ich das Makro laufen lasse, wird ab hier:
If IsDate(.Range("D23")) Then
wird direkt
End If ganz unten aktiviert.
Mein Datum ist in D23 so hinterlegt:
="Datum "&TEXT(J23;"TT.MM.JJJJ")
mfg
walter mb

AW: Makro läuft nicht, vielleicht weil...
18.05.2014 12:50:35
Tino
Hallo,
demnach steht in J23 ein richtiges Datum (kein Text)
Mach aus D23 im Code überall J23.
Gruß Tino

Danke -)
18.05.2014 13:20:16
walter mb
Hallo Tino,
läuft bestens !
Danke und schönen Sonntag noch !
mfg
walter mb

AW: Danke -)
18.05.2014 17:44:36
Hajo_Zi
Hallo Walter,
was ist noch offen, da Du den Beitrag als offen gekennzeichnet hast.
Gruß Hajo

Anzeige
Hallo Tino noch eine kleine Frage ???
18.05.2014 19:51:23
walter mb
Hallo Tino,
also habe es jetzt in mein Makro eingearbeitet.
Ich habe noch zusätzlich zur Überprüfung die nächsten Zeilen eingebaut.
Wenn die neue Datei schon vorhanden ist, wurde Info ausgegeben und dann
die neue Datei gelöscht.
Frage:
Kannst Du mir dies in deinem Makro Bereich einbauen ?
mfg
walter mb
Dim fs As Object, OrdNam As Variant, Ord As Byte, Pfad As String
Dim DateiNam As String
Dim aDatei As String
DateiNam = wbName & " " & "Rg.-Nr. " & ActiveSheet.Range("J25") _
& " " & ActiveSheet.Range("E23") & ".xls"
'===============
If Dir("C:\_Muster\__Dokumente.Buchhaltung\Rechnungen gedruckt\" & DateiNam) <> "" Then
MsgBox "Kunden-Name " & DateiNam & _
Chr(13) & Chr(13) & " mit der Rg. - Nr. ist vorhanden !" & vbLf & vbLf & "Bitte ändern !"
aDatei = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\_Muster\__Dokumente.Buchhaltung\Rechnungen gedruckt\" & aDatei
aDatei = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.Close False
Kill aDatei
Exit Sub
On Error Resume Next
End If
'=========== bis hier ================================================
Dim strPath$
'Pfad
strPath = "C:\_Muster\__Dokumente.Buchhaltung\Rechnungen gedruckt\"
With ActiveSheet 'Tabelle anpassen
If IsDate(.Range("J23")) Then
If .Range("J23") > 0 Then
'Pfad Jahr
strPath = strPath & Year(.Range("J23").Value) & "\"
'Pfad Monat
strPath = strPath & Format(.Range("J23").Value, "MM MMMM") & "\"
'Ordner erstellen sollte dieser nicht vorhanden sein
apiCreateFullPath strPath
'Pfad Dateiname
strPath = strPath & DateiNam '''''''ActiveWorkbook.Name
'speichern
' ActiveWorkbook.SaveAs strPath, ActiveWorkbook.FileFormat
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
End If
End If
End With

Anzeige
AW: Hallo Tino noch eine kleine Frage ???
19.05.2014 09:43:09
Tino
Hallo,
kenne Deinen Aufbau der Dateien und der Struktur nicht wie dies alles gesteuert wird,
daher habe ich mich an Deinen Code orientiert und hoffe das es so passt.
Ich kann ich auch nicht sagen was in wbName steht, kann ich aus deinem Code nicht ableiten.
Private Declare Function apiCreateFullPath _
Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Sub test()
Dim DateiNam As String, wbName$
Dim strPath$

'wbName ???? 
DateiNam = wbName & " " & "Rg.-Nr. " & ActiveSheet.Range("J25") & " " & ActiveSheet.Range("E23") & ".xls"
'Pfad 
strPath = "C:\_Muster\__Dokumente.Buchhaltung\Rechnungen gedruckt\"

With ActiveSheet 'Tabelle anpassen 
    If IsDate(.Range("J23")) Then
        If .Range("J23") > 0 Then
            'Pfad Jahr 
            strPath = strPath & Year(.Range("J23").Value) & "\"
            'Pfad Monat 
            strPath = strPath & Format(.Range("J23").Value, "MM MMMM") & "\"
            'Ordner erstellen sollte dieser nicht vorhanden sein 
            apiCreateFullPath strPath
            'Pfad Dateiname 
            strPath = strPath & DateiNam '''''''ActiveWorkbook.Name 
            
            'Prüfung ob vorhanden 
            If Dir(strPath, vbNormal) <> "" Then
                MsgBox "Kunden-Name " & DateiNam & Chr(13) & Chr(13) & _
                    "mit der Rg. - Nr. ist vorhanden !" & vbLf & vbLf & "Bitte ändern !"
                strPath = ActiveWorkbook.FullName
                On Error Resume Next
                    ActiveWorkbook.Close False
                    Kill strPath
                On Error GoTo 0
            Else
                Application.DisplayAlerts = False
                    ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlNormal, _
                    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
                Application.DisplayAlerts = True
            End If
        End If
    End If
End With
End Sub
Gruß Tino

Anzeige
Hallo Tino, melde mich nachher...
19.05.2014 12:25:35
walter mb
Hallo Tino,
DANKE.
Kann gerade nicht testen melde mich nachher.
gruß
walter mb

AW: Hallo Tino, melde mich nachher...
19.05.2014 20:06:25

Danke Tino einwandfrei DANKE ! -)
19.05.2014 21:19:43
walter mb
Guten Abend Tino,
alles funktioniert, habe nur noch exit sub reingesetzt damit man mit
der Musterdatei weiterarbeiten kann.
Super Danke !!!
Dim strPath$
DateiNam = wbName & " " & "Rg.-Nr. " & ActiveSheet.Range("J25") & " " & ActiveSheet.Range("E23") & ".xls"
'Pfad
strPath = "C:\_Daners\__Dokumente.Buchhaltung\Rechnungen gedruckt\"
With ActiveSheet 'Tabelle anpassen
If IsDate(.Range("J23")) Then
If .Range("J23") > 0 Then
'Pfad Jahr
strPath = strPath & Year(.Range("J23").Value) & "\"
'Pfad Monat
strPath = strPath & Format(.Range("J23").Value, "MM MMMM") & "\"
'Ordner erstellen sollte dieser nicht vorhanden sein
apiCreateFullPath strPath
'Pfad Dateiname
strPath = strPath & DateiNam '''''''ActiveWorkbook.Name
'Prüfung ob vorhanden
If Dir(strPath, vbNormal) <> "" Then
MsgBox "Kunden-Name " & DateiNam & Chr(13) & Chr(13) & _
"mit der Rg. - Nr. ist vorhanden !" & vbLf & vbLf & "Bitte ändern !"
strPath = ActiveWorkbook.FullName
On Error Resume Next
ActiveWorkbook.Close False
Kill strPath
Exit Sub ' ich eingesetzt
On Error GoTo 0
Else
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
Application.DisplayAlerts = True
End If
End If
End If
End With

Anzeige

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige