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

Datum über Variable in Dateinamen

Datum über Variable in Dateinamen
07.09.2016 15:32:40
Aaron

Hallo zusammen,
... ich komm nicht mehr weiter.
Bis vor kurzem hat das Makro funktioniert und jetzt tut es das nur noch nach Lust und Laune...
Mit der Hilfe aus dem Forum konnte ich einen Teil meines Codes vervollständigen, bzw. richtig zusammenstellen.
Der Anwender ruft eine xltm auf, die später als xlsm gespeichert werden soll.
Der neue Dateiname setzt sich aus dem Datum aus F34, dem Nach- & Vornamen zusammen.


'#  Prozedur Speichern                          #
'Variablen festlegen
'Datum
Dim Datum
'Nachname
Dim Name
'Vorname
Dim Vorname
'Speicherpfad
Dim Speicherpfad
'Dateiname
Dim Dateiname
'Zähler
Dim Zähler
'Datei
Dim Datei
'    WS1.Range("B34").Copy
'    WS1.Range("F34").Select
'    ActiveSheet.Paste
'    WS1.Range("F34").NumberFormat = "YY-MM-DD"
'Variablen bestimmen
'Datum
Datum = WS1.Range("F34").Text
'Nachname
Name = WS1.Range("B7").Value
'Vorname
Vorname = WS1.Range("B9").Value
'Speicherpfad
Speicherpfad = "Dateiname"
'Dateiname
Dateinamezähler = Datum & "_" & Name & " " & Vorname & "*" & ".xlsx"
Dateiname = Datum & "_" & Name & " " & Vorname
'Zähler
Zähler = 1
'Datei
Datei = Dir(Speicherpfad & Dateinamezähler)
Do Until Datei = ""
Zähler = Zähler + 1
Datei = Dir()
Loop
Sheets.Copy
'Kopie von Datei als xlsx speichern
Application.DisplayAlerts = False
If Zähler = 0 Then
ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook
ActiveWorkbook.Close
Else
ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & "_" & Zähler & ".xlsx",  _
FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End If
Application.DisplayAlerts = True
Der auskommentierte Teil hat das Kopieren des Datums bisher übernommen, habe es aber jetzt direkt in der Vorlage hinterlegt:
Im Excelsheet ist "F34 =(B34)" hinterlegt.
B34 ist als DD-MM-YYYY formatiert, F34 als YY-MM-DD.
Beim Speichern habe ich nun das Problem, dass er sich das Datum nicht zieht und nur "_Name Vorname.xlsx_1" gespeichert wird.
Das Datenblatt selber hat einen Schreibschutz, alle benötigten Zellen können aber ausgewählt, befüllt, gelöscht und formatiert werden.
Ich habe keine Ahnung mehr, woran es liegt und verzweifle fast.
Hat jemand von euch freundlicherweise eine Lösung für mich parat, die mir helfen kann?
Ich bedanke mich im Voraus für eure Unterstützung.
MfG
Aaron

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum über Variable in Dateinamen
07.09.2016 16:11:54
UweD
Hallo
1) es fehlt die Festlegung des Tabellenblattes WS1
2) Speicherpfad sollte schon ein Verzeichnispfad sein..
Ich habe die Änderungen eingebaut Mit '********** gekennweichnet
Option Explicit 
 
Sub dgdgd() 
'################################################ 
'#  Prozedur Speichern                          # 
'################################################ 
 
    'Variablen festlegen 
    'Datum 
    Dim Datum 
    'Nachname 
    Dim Name 
    'Vorname 
    Dim Vorname 
    'Speicherpfad 
    Dim Speicherpfad 
    'Dateiname 
    Dim Dateiname 
    'Zähler 
    Dim Zähler 
    'Datei 
    Dim Datei 
     
    Dim Dateinamezähler 
     
     
    '********************* 
    'Tabellenblatt 
    Dim WS1 As Worksheet 
    Set WS1 = Sheets("Tabelle1") 
    '********************* 
     
 
 
'    WS1.Range("B34").Copy 
'    WS1.Range("F34").Select 
'    ActiveSheet.Paste 
'    WS1.Range("F34").NumberFormat = "YY-MM-DD" 
 
    'Variablen bestimmen 
    'Datum 
    Datum = WS1.Range("F34").Text 
    'Nachname 
    Name = WS1.Range("B7").Value 
    'Vorname 
    Vorname = WS1.Range("B9").Value 
    'Speicherpfad 
     
     
     
    '********************* 
    Speicherpfad = "c:\Temp\" 
    '********************* 
     
    'Dateiname 
    Dateinamezähler = Datum & "_" & Name & " " & Vorname & "*" & ".xlsx" 
    Dateiname = Datum & "_" & Name & " " & Vorname 
     
    'Zähler 
    Zähler = 1 
    'Datei 
    Datei = Dir(Speicherpfad & Dateinamezähler) 
     
    Do Until Datei = "" 
        Zähler = Zähler + 1 
        Datei = Dir() 
    Loop 
 
    Sheets.Copy 
 
    'Kopie von Datei als xlsx speichern 
    Application.DisplayAlerts = False 
     
    If Zähler = 0 Then 
 
        ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & ".xlsx", FileFormat:= _
            xlOpenXMLWorkbook 
        ActiveWorkbook.Close 
    Else 
        ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & "_" & Zähler & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook 
        ActiveWorkbook.Close 
     
    End If 
    Application.DisplayAlerts = True 
End Sub 

LG UweD
Anzeige
AW: Datum über Variable in Dateinamen
07.09.2016 16:18:49
Aaron
Hallo Uwe,
vielen Dank für deine schnelle Rückmeldung.
Sorry, das habe ich vergessen.
Der Code enthält noch weitere Schritte. Dort sind alle anderen Variablen definiert.
Den Speicherpfad habe ich wegen Datenschutz (irrtümlicherweise) mit Speicherpfad = "Dateiname" "geschwärzt".
Fällt mir gerade auf, dass ich das auch in den Variablen hatte... sorry :-/
Gruß
Aaron
AW: Datum über Variable in Dateinamen
07.09.2016 16:32:11
UweD
Hallo nochmal
Ok, dann kann ich nicht weiter helfen.
Bei mir funktioniert der Code..
Ich vermute trotzdem, das das WS1 nicht richtig bestimmt ist
bau mal vor dem Datum das hier ein..
    MsgBox ActiveWorkbook.Name & ", " & WS1.Name
LG UweD
Anzeige
AW: Datum über Variable in Dateinamen
07.09.2016 16:40:16
Aaron
Hallo Uwe,
... leider kann ich die Datei nicht hochladen, ich schreibe aber gerne die Bestimmung von WS1 rein:
    'Variablen bestimmen
'Workbooks
Set WB1 = ThisWorkbook
'Tabellenblätter
Set WS1 = WB1.Sheets("R")
Durch die MsgBox wird auch das (bzw. der Dateiname) ausgegeben.
Der Code an sich funktioniert bei mir auch, er legt die Datei auch ordnungsgemäß an.
Nur bei dem Datum spinnt er und überträgt es mir nicht.
Gruß
Aaron
AW: Datum über Variable in Dateinamen
07.09.2016 16:54:43
UweD
Hat Datum denn nach der Zuweisung den richtigen Wert?
    'Datum 
    Datum = WS1.Range("F34").Text
    MsgBox Datum
    Name = WS1.Range("B7").Value
    'Vorname 

Userbild
Anzeige
AW: Datum über Variable in Dateinamen
07.09.2016 17:28:22
Bastian
Ja bei mir geht es auch so
Da du den Zähler auf 1 setzt am anfang kannst du dir am ende das if sparen da wieso immer ein Zähler vorhanden ist
Gruß BAsti

Sub fff()
'Variablen festlegen
'Datum
Dim Datum
'Nachname
Dim Name
'Vorname
Dim Vorname
'Speicherpfad
Dim Speicherpfad
'Dateiname
Dim Dateiname
'Zähler
Dim Zähler
'Datei
Dim Datei
'Variablen bestimmen
'Workbooks
Set WB1 = ThisWorkbook
'Tabellenblätter
Set WS1 = WB1.Sheets("R")
WS1.Range("B34").Copy WS1.Range("F34")
WS1.Range("F34").NumberFormat = "YY-MM-DD"
'Variablen bestimmen
'Datum
Datum = WS1.Range("F34").Text
'Nachname
Name = WS1.Range("B7").Value
'Vorname
Vorname = WS1.Range("B9").Value
'Speicherpfad
Speicherpfad = ThisWorkbook.Path & "\"
'Dateiname
Dateinamezähler = Datum & "_" & Name & " " & Vorname & "*" & ".xlsx"
Dateiname = Datum & "_" & Name & " " & Vorname
'Zähler
Zähler = 1
'Datei
Datei = Dir(Speicherpfad & Dateinamezähler)
Do Until Datei = ""
Zähler = Zähler + 1
Datei = Dir()
Loop
WS1.Copy
'Kopie von Datei als xlsx speichern
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & "_" & Zähler & ".xlsx",  _
_
FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

Anzeige
AW: Datum über Variable in Dateinamen
08.09.2016 22:56:00
Aaron
Hallo Basti,
hallo Uwe,
vielen Dank für eure Rückmeldungen.
Mit "F34 = B34" wird der Text nicht in die MsgBox übernommen.
Ich habe dafür nun den Code von Basti
WS1.Range("B34").Copy WS1.Range("F34")
WS1.Range("F34").NumberFormat = "YY-MM-DD"
ergänzt und damit klappt es wieder.
Vielen Dank für eure Unterstützung und einen schönen Abend.
Gruß
Aaron
Nochmal HILFE: Datum über Variable in Dateinamen
08.09.2016 23:42:35
Aaron
Hallo Basti,
hallo Uwe,
die Korrekturen umgesetzt, in einer Testdatei durchgespielt - funktioniert.
Übertragen in die Originaldatei (dort aber alle nicht relevanten Teile auskommentiert) - funktioniert nicht.
Ich hab auch eine Version versucht, in der ich via VBA den Blattschutz ausschalte, da ich diesen als Fehlerquelle ausschließen wollte.
Funktioniert auch nicht.
Mal setzt er mir das Datum dran, mal nicht?!
Die Datei hochzuladen hätte ich schon von Anfang an machen können (ich bitte um Entschuldigung).
Das möchte ich nun gern nachholen:
https://www.herber.de/bbs/user/108087.xlsm
(Allerdings als xlsm, upload mit xltm nicht möglich. Das sollte dem Grundgedanken aber nicht schaden.)
Das Passwort für den Blattschutz lautet in dieser Beispieldatei "Passwort"
Dieses Abrechnungsblatt liegt auf einem Serverlaufwerk.
Die gespeicherte Kopie liegt auf dem selben Pfad "einen Ordner nebendran".
Den "if-Teil" habe ich mal rauskommentiert, da es noch nicht sicher ist ob der Zähler bei 0 oder 1 beginnt.
Langsam weiß ich nicht mehr weiter, da das Datum mal im Dateinamen auftaucht und mal nicht?!
Vielleicht habt ihr einen anderen Ansatz.
Vielen Dank im Voraus.
Gruß
Aaron
Anzeige
AW: Nochmal HILFE: Datum über Variable in Dateinamen
09.09.2016 10:11:04
UweD
Hallo
- In die Zelle F34 die Formel =B34 reinschreiben.
- Das Format entsprechend einstellen
- Wenn du F34 aber sonst nirgendwo mehr brauchst, kann du es aber auch komplett weggelassen, da das Format auch direkt aus B34 gelesen werden kann.
- Da du nur lesend auf die Tabelle zugreifst, wäre ein Blattschutz NICHT hinderlich.
- Das Zählerproblem hab ich auch noch abgeändert..
= durch

... Dateiname & "_" & Zähler + 1 & ".xlsx", FileFormat...
wird mit Dateinummer 1 begonnen...
Sub Test()
    
    'Vorgang im verborgenen durchführen 
    Application.ScreenUpdating = False

    'Workbooks 
    Dim WB1 As Workbook
    'Tabellenblätter 
    Dim WS1 As Worksheet


    'Variablen bestimmen 
    'Workbooks 
    Set WB1 = ThisWorkbook
    'Tabellenblätter 
    Set WS1 = WB1.Sheets("R")

'################################################################################ 
'#  Prozedur Speichern                                                          # 
'################################################################################ 

    'Variablen festlegen 
    Dim Datum 'Datum 
    Dim Name 'Nachname 
    Dim Vorname 'Vorname 
    Dim Speicherpfad 'Speicherpfad 
    Dim Dateiname 'Dateiname 
    Dim Zähler 'Zähler 
    Dim Datei 'Datei 

    'Variablen bestimmen 
    Datum = Format(WS1.Range("B34"), "YY-MM-DD") 'Datum 
    Name = WS1.Range("B7").Value 'Nachname 
    Vorname = WS1.Range("B9").Value 'Vorname 
    Speicherpfad = "C:\Users\" & Environ("Username") & "\Desktop\test\" 'Speicherpfad 
    Dateinamezähler = Datum & "_" & Name & " " & Vorname & "*" & ".xlsx" 'Dateiname 
    Dateiname = Datum & "_" & Name & " " & Vorname
    
    'auf vorhandene Datei prüfen 
    Datei = Dir(Speicherpfad & Dateinamezähler)
    
    Do Until Datei = ""
        Zähler = Zähler + 1
        Datei = Dir()
    Loop

    Sheets.Copy

    'Kopie von Datei als xlsx speichern 
        ActiveWorkbook.SaveAs Filename:=Speicherpfad & Dateiname & "_" & Zähler & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    ActiveWorkbook.Close
    
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 15 - mit VBAHTML 12.6.0

Bei mir klappt das ohne Probleme
LG UweD
Anzeige
AW: Nochmal HILFE: Datum über Variable in Dateinamen
12.09.2016 23:09:36
Aaron
Hallo Uwe,
vielen Dank für deine Rückmeldung - auch zum Zähler.
Habe den Code angepasst und die Dateien gespeichert.
Komisch, dass es bei dir funktioniert und an meinem Rechner mal ja und mal nein...
Hab jetzt erstmal Urlaub und danach sehen wir weiter. ;-)
Ich wünsche noch einen angenehmen Abend.
Gruß
Aaron

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige