Niklas_V 0 Geschrieben 24. Juni 2014 Melden Teilen Geschrieben 24. Juni 2014 Hallo, folgende Frage: Wir haben bei uns im Unternehmen wöchentlich eine Excelliste auszudrucken, wobei jede Woche eine neue Datei erstellt wird. Der Name der Datei ist immer "Schichtplan 2014 01.xlsx", wobei der hintere Teil also die "01" dann durch "02" usw. ersetzt wird. Diese soll nach Möglichkeit zeitgesteuert jeden Montag nach Computerstart gedruckt werden. Durch wiederholtes Googlen versuch Ich es nun mit einem VBScript zu realisieren, da ich aber ein Anfänger im Bereich scripting bin funktioniert mein Script noch nicht so ganz. Ich bekomm es hin das eine Datei gedruckt wird aber noch nicht das sich das Script immer die aktuellste .xlsx-Datei raussucht. Hier mal mein erster Versuch: ' Excel (versteckt) öffnen Set appXLS = CreateObject("Excel.Application") ' Workbook (versteckt) und schreibgeschützt öffnen Set wbkXLS = appXLS.Workbooks.Open("C:\Users\Niklas Vitt\Documents\Schichtplaene\Schichtplan 2014 25.xlsx", , True) Aktuell = "" Pre = "Schichtplan 2014 " For Each Blatt in wbkXLS.worksheets BN = Blatt.Name If Left (BN, Len(Pre)) = Pre Then Woche = Split(BN) (1) If Woche > Aktuell Then Aktuell = Woche End If Next MsgBox "Neuestes Blatt: " & Pre & Aktuell ' Tabelle1 ausdrucken wbkXLS.sheets("Tabelle1").PrintOut ' Workbook schließen wbkXLS.Close Set wbkXLS = Nothing appXLS.Quit Set appXLS = Nothing freue mich über jede Hilfe MfG Niklas_V Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 24. Juni 2014 Melden Teilen Geschrieben 24. Juni 2014 Du meinst doch den Dateiname, nicht das Tabellenblatt darin, korrekt? Wenn diese Wochennummern den Kalenderwochen entsprechen, könntest Du z.B. die Datepart-Funktion nutzen: Woche = Datepart("ww",Date,2) Dateiname = "Wochenplan 2014 " & Woche & ".xlsx" Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 24. Juni 2014 Autor Melden Teilen Geschrieben 24. Juni 2014 Korrekt ich meine den Dateiname, leider entspricht die Nummer der Datei nicht der Kalenderwoche sondern wird einfach hochgezählt. danke schonmal ;) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 24. Juni 2014 Melden Teilen Geschrieben 24. Juni 2014 Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder("C:\MeinOrdner\") predate=date() for each file in folder.Files filedate = file.datelastmodified if filedate > predate then Dateiname=file.path predate=filedate next so in der Art könntest Du zumindest die neueste Datei raussuchen. Sollte es da noch mehr ausser "Wochenplan" geben, kannst ja innerhalb der For-Each-Schleife noch filtern... Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 25. Juni 2014 Autor Melden Teilen Geschrieben 25. Juni 2014 Okay vielen dank schonmal für die hilfe, kannst du mir vielleicht auch noch helfen wie ich das in mein script einbauen kann? bis jetzt krieg ich nur fehlermeldungen :P Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 25. Juni 2014 Melden Teilen Geschrieben 25. Juni 2014 MyPath= "J:\DIV\XLS" Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(MyPath) for each file in folder.Files filedate = file.datelastmodified if filedate > predate then Dateiname=file.path predate=filedate end if next Set appXLS = CreateObject("Excel.Application") Set wbkXLS = appXLS.Workbooks.Open(Dateiname,,True) maybe like this? ... dannach dann halt noch den "Printout-Befehl etc... Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 25. Juni 2014 Autor Melden Teilen Geschrieben 25. Juni 2014 Das klappt soweit schonma ganz gut. Zusätzlich wäre es sehr schön wenn das Script eine Log in einem beliebigen Pfad erstellen könnte, nachdem das Script ausgeführt wurde. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 25. Juni 2014 Melden Teilen Geschrieben 25. Juni 2014 Das Filesystemobjekt hast ja schon, dann kannst mit nem fso.OpenTextFile... ne Logdatei öffnen (bzw. anlegen) und dort dann mit nem write bzw. writeline was reinhäcken. Einfach mal nach VBS opentextfile bzw. write googeln ;-))) Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 26. Juni 2014 Autor Melden Teilen Geschrieben 26. Juni 2014 Hi nochmal, Ein letzter Feinschliff fehlt mir noch... und zwar legt mein Skript jetzt fleißig ein Log an aber überschreibt dieses immer weil es ja den gleichen Namen erhält. Wie schaff ich es das immer das Datum angehangen wird? Also das quasi immer wieder eine neue Log entsteht mit dem Erstellungsdatum. Soweit bin ich: Dim fso, MeineDatei Set fso = CreateObject("Scripting.FileSystemObject") Set MeineDatei = fso.CreateTextFile("C:\Users\XXX XXX\XXX\LogFiles\TestLog.txt", True, True) MeineDatei.WriteLine("Der Schichtplan wurde gedruckt") MeineDatei.Close MfG Niklas Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 26. Juni 2014 Melden Teilen Geschrieben 26. Juni 2014 (bearbeitet) Statt CreateTextFile eben OpenTextFile und das mit der Option "ForAppending" (8). fso.OpenTextFile("Log.txt",8) und bei dem writeline einfach noch'n Datum mit ausgeben: MeineDatei.writeline Dateiname & " wurde gedruckt am " & Date() bearbeitet 26. Juni 2014 von Cybquest Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 26. Juni 2014 Autor Melden Teilen Geschrieben 26. Juni 2014 Hmm... liegt das an mir oder warum schreibt der sowas hier in die Log: "敄捓楨档灴慬畷摲敧牤捵瑫愠㉭⸶㘰㈮ഴ" ? :confused: so sieht der Code aus .. eig nicht groß verändert: Dim fso, MeineDatei Set fso = CreateObject("Scripting.FileSystemObject") Set MeineDatei = fso.OpenTextFile("C:\Users\XXX XXX\XXX\LogFiles\SchichtplanLog.log", 8, True) MeineDatei.WriteLine "Der Schichtplan wurde gedruckt am" & Date() MeineDatei.Close Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 26. Juni 2014 Melden Teilen Geschrieben 26. Juni 2014 Wozu das "True" als weiteren Parameter? Bei OpenTextFile wird als 3. Parameter dort das Code-Format angegeben. Lass das einfach weg, damit Systemdefault genommen wird. Ansonsten: Schau Dir auf MSDN.microsoft.com einfach mal die OpenTextFile-Methode an! Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 26. Juni 2014 Autor Melden Teilen Geschrieben 26. Juni 2014 So jetzt funktioniert alles so wie es soll! Thema kann erfolgreich geschlossen werden. Vielen lieben dank für die schnelle un gute Hilfe :) Falls ich mal wieder irgendein Problem haben sollte werde ich mich wieder melden. MfG Niklas Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 26. Juni 2014 Melden Teilen Geschrieben 26. Juni 2014 Gern geschehen :) Zitieren Link zu diesem Kommentar
Niklas_V 0 Geschrieben 15. Juli 2014 Autor Melden Teilen Geschrieben 15. Juli 2014 Moin nochma ;) Das Skript funktioniert soweit ganz gut, jetzt hab ich noch ein Problem, und zwar kann ich auch nach der aktuellsten .xls-datei filtern das er mir nur die ausdruckt? Weil das Skript gibt einen Fehler aus wenn zum Beispiel eine .txt-Datei im Ordner enthalten ist die neuer ist als das zu Druckende xls-file. Also muss ich das Skript so anpassen, dass auch wenn eine andere Datei im Ordner liegt die neuer ist, das Skript trotzdem die neueste .xls-Datei druckt. Ich bin für jeden Lösungsvorschlag dankbar :) MfG Niklas Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.