Dateien nachts automatisiert umbenennen + Timstamp

visioo

Commander
Registriert
Okt. 2007
Beiträge
2.116
Hallo zusammen,

ich möchte eine Datei (Hanswurst.xlsx) einmal pro Woche nachts automatisiert (batch, script etc.) umbenennen und diese dann in einen anderen Ordner verschieben. Die Datei soll dann so aussehen:

Hanswurst_KW18_15-04-27.xlsx

Die Datei wird durch ein VB Script aktualisiert und gespeichert- evtl. kann man im Script schon den Dateinamen mit angeben. Leider hänge ich an der KW und am Format fest. Deswegen die Idee mit Datei kopieren und umbenennen. Das Format muss leider so sein wie oben angegeben ....


Habt ihr eine Idee wie man so etwas einfach realisieren kann?

Gruß
 
Zuletzt bearbeitet:
Mach dir für die Kalenderwoche nicht die Mühe, das mit Batch zu versuchen. In VBScript ist das eine Zeile:
Code:
DatePart("ww",Date,vbMonday,vbFirstFourDays)

Leider bin ich in VBScript nicht bewandert, aber da lässt sich sicher was zusammenbasteln, alternativ kann man natürlich auch Batch und VBScript kombinieren, aber das erscheint mir irgendwie überflüssig, wenn man sowieso schon VBScript bemüht, noch Batch anzuschleppen.
 
habs jetzt gelöst. Und zwar direkt in dem Script das die Datei aktualisiert:

Dim KalenderWoche
KalenderWoche = DatePart("ww",now)

sDay = Day(Now())
If Len(sDay) = 1 Then sDay = "0" & Day(Now())
sMonth = Month(Now())
If Len(sMonth) = 1 Then sMonth = "0" & Month(Now())
sYear = Year(Now())
sDate = sYear &"-"& sMonth &"-"& sDay

'speichert die XLSX
objWorkbook.SaveAs("c:Hanswurst"&Kalenderwoche&"_"&sDate&".xls")
Ergänzung ()

Hat noch jemand eine Idee wie ich einzelne Arbeitsblätter in eine PDF exportiere?
Mit einem Arbeitsblatt hauts hin, sobald ich ein weiteres hinterlege funktionierts nicht mehr.
Dieses Script mit nur einem Sheet funzt, sobald ich ein weiteres anhänge nicht mehr....

Set xlObj = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("S:\TEST1")
For Each file In f.Files
set xlWB = xlObj.Workbooks.Open("S:\TEST\test.xlsx")
thisFileName =Left(xlWB.FullName , InStrRev(xlWB.FullName , ".") - 1)
xlWB.Sheets("TEST").Select
xlWB.ActiveSheet.ExportAsFixedFormat 0, thisFileName & ".pdf", 0, 1, 0,,,0
xlWB.close False
counter = counter + 1
WScript.Echo "File " & counter & " of " & f.Files.count & " Done"
Next
xlObj.quit
 
Zuletzt bearbeitet:
Du exportierst in Zeile 8 (zukünftig am besten den [code]...[/code]-Tag verwenden) nur das aktuelle Sheet.
Hier steht, dass du mehrere Blätter auswählen und dann die Selection exportieren kannst.
Teste das mal.
 
Servus,

hab ich auch schon durch.... Bekomme immer den Fehler "Das Objekt unterstützt die Eigenschaft oder Methode nicht"
 
Hm. Um welche Excelversion handelt es sich denn. Unter 2013 kriege ich seltsamerweise bei Verwendung von Selection.Export.... zwar keinen Fehler aber drei leere Seiten.
Selektiere ich hingegen die drei Tabellenblätter und verwende ActiveSheet.Export... dann klappt es bei mir.
 
Servus,

ich hab Excel 2013. Kannst du mir mal deinen Code schicken mit dem es funktioniert. Wär nett :)
 
Also bei mir funktioniert's hiermit als Makro im Workbook.

Code:
Sub export()
    ThisWorkbook.Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="C:\Users\Peter\Desktop\test\temp.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

Schreibrechte dür den Zielordner sollten natürlich auch vorhanden sein.
 
Servus,

ich habs jetzt nochmal angepasst (da ich auf eine XLS auf einem Netzlaufwerk zugreife). Jetzt funktionierts. Ka warum.....
Danke dir !

Code:
Set xlObj = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("S:\TEST")
For Each file In f.Files
set xlWB = xlObj.Workbooks.Open("S:\TEST\TEST.xlsx")
thisFileName =Left(xlWB.FullName , InStrRev(xlWB.FullName , ".") - 1)
   xlWB.Sheets(Array("TEST", "TEST1")).Select
    xlWB.ActiveSheet.ExportAsFixedFormat 0, thisFileName & ".pdf", 0, 1, 0,,,0
xlWB.close False
counter = counter + 1
WScript.Echo "File " & counter & " of " & f.Files.count & " Done"
Next
xlObj.quit
 
Zurück
Oben