Excel neuestes Tabellenblatt jeden Montag automatisch drucken
lordofremixes (Level 2) - Jetzt verbinden
08.11.2011, aktualisiert 11:29 Uhr, 8039 Aufrufe, 30 Kommentare
Excel Problem automatisches drucken des aktuellsten Tabellenblatts
Hallo zusammen,
stehe vor folgendem Problem. Ich habe eine Excel Datei, in der jeden Freitag ein neuen Tabellenblatt hinzugefügt (KW 41, dann KW 42 usw..) in der die Aufträge der jeweiligen KW drin steht
Ich brauche eine Batch oder ein Makro, das von dieser Datei jeden Montag morgen das neuste Tabellenblatt automatisch ausdruckt.
Habe die vbs soweit, das Problem ist , ich weiß nicht ob der Ansatz so richtig ist und vorallem wie bekomme ich es hin, das er automatisch immer nur das aktuellste Tabellenblatt druckt : (z.B. nur KW 42)`?
Die vbs würde ich dann in den Taskplaner eintragen (ZB Montag 06.00 Uhr) und wenn ich dann in das Geschäft komme, liegen die Aufträge der aktuellen KW schon bereit im Drucker.
Weiß irgendjemand wie man soetwas umsetzen kann?
so weit bin ich gekommen:
' Datei mit einem normale Editor anlegen
' Dateiendung .VBS
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open("C:\auftragstabelle.xls", , True)
' Tabelle1 ausdrucken
wbkXLS.sheets("Tabelle1").PrintOut
' Workbook schließen
wbkXLS.Close
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
Gruß + Danke
lordofremixes
stehe vor folgendem Problem. Ich habe eine Excel Datei, in der jeden Freitag ein neuen Tabellenblatt hinzugefügt (KW 41, dann KW 42 usw..) in der die Aufträge der jeweiligen KW drin steht
Ich brauche eine Batch oder ein Makro, das von dieser Datei jeden Montag morgen das neuste Tabellenblatt automatisch ausdruckt.
Habe die vbs soweit, das Problem ist , ich weiß nicht ob der Ansatz so richtig ist und vorallem wie bekomme ich es hin, das er automatisch immer nur das aktuellste Tabellenblatt druckt : (z.B. nur KW 42)`?
Die vbs würde ich dann in den Taskplaner eintragen (ZB Montag 06.00 Uhr) und wenn ich dann in das Geschäft komme, liegen die Aufträge der aktuellen KW schon bereit im Drucker.
Weiß irgendjemand wie man soetwas umsetzen kann?
so weit bin ich gekommen:
' Datei mit einem normale Editor anlegen
' Dateiendung .VBS
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open("C:\auftragstabelle.xls", , True)
' Tabelle1 ausdrucken
wbkXLS.sheets("Tabelle1").PrintOut
' Workbook schließen
wbkXLS.Close
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
Gruß + Danke
lordofremixes
30 Antworten
- LÖSUNG bastla schreibt am 08.11.2011 um 13:13:16 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 18:07:04 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 18:16:18 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 18:39:47 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 18:49:24 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 19:57:04 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 20:06:03 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 20:11:42 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 20:42:53 Uhr
- LÖSUNG lordofremixes schreibt am 13.12.2011 um 14:39:28 Uhr
- LÖSUNG bastla schreibt am 13.12.2011 um 15:29:51 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 08:27:10 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 09:42:34 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 11:35:02 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 11:40:57 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 12:49:55 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 13:11:56 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 19:29:33 Uhr
- LÖSUNG lordofremixes schreibt am 15.12.2011 um 09:54:30 Uhr
- LÖSUNG bastla schreibt am 15.12.2011 um 11:25:42 Uhr
- LÖSUNG lordofremixes schreibt am 20.12.2011 um 10:02:03 Uhr
- LÖSUNG bastla schreibt am 20.12.2011 um 13:06:10 Uhr
- LÖSUNG lordofremixes schreibt am 21.12.2011 um 09:01:24 Uhr
- LÖSUNG bastla schreibt am 21.12.2011 um 12:41:16 Uhr
- LÖSUNG lordofremixes schreibt am 21.12.2011 um 09:01:24 Uhr
- LÖSUNG bastla schreibt am 20.12.2011 um 13:06:10 Uhr
- LÖSUNG lordofremixes schreibt am 20.12.2011 um 10:02:03 Uhr
- LÖSUNG bastla schreibt am 15.12.2011 um 11:25:42 Uhr
- LÖSUNG lordofremixes schreibt am 15.12.2011 um 09:54:30 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 19:29:33 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 11:40:57 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 11:35:02 Uhr
- LÖSUNG bastla schreibt am 14.12.2011 um 09:42:34 Uhr
- LÖSUNG lordofremixes schreibt am 14.12.2011 um 08:27:10 Uhr
- LÖSUNG bastla schreibt am 13.12.2011 um 15:29:51 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 20:11:42 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 20:06:03 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 19:57:04 Uhr
- LÖSUNG bastla schreibt am 09.11.2011 um 18:16:18 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 18:07:04 Uhr
- LÖSUNG Jochem schreibt am 08.11.2011 um 14:48:26 Uhr
- LÖSUNG bastla schreibt am 08.11.2011 um 15:35:47 Uhr
- LÖSUNG Jochem schreibt am 08.11.2011 um 16:03:58 Uhr
- LÖSUNG bastla schreibt am 08.11.2011 um 16:51:54 Uhr
- LÖSUNG Jochem schreibt am 08.11.2011 um 17:04:35 Uhr
- LÖSUNG bastla schreibt am 08.11.2011 um 16:51:54 Uhr
- LÖSUNG Jochem schreibt am 08.11.2011 um 16:03:58 Uhr
- LÖSUNG lordofremixes schreibt am 09.11.2011 um 18:10:54 Uhr
- LÖSUNG bastla schreibt am 08.11.2011 um 15:35:47 Uhr
LÖSUNG 08.11.2011 um 13:13 Uhr
Hallo lordofremixes!
Unter der Annahme, dass die Benennung konsequent (also immer mit Leerzeichen vor der Wochennummer) erfolgt, könntest Du das Blatt mit der höchsten Nummer so finden:
Grüße
bastla
P.S.: Verwende doch bitte "Code"-Formatierung ...
Unter der Annahme, dass die Benennung konsequent (also immer mit Leerzeichen vor der Wochennummer) erfolgt, könntest Du das Blatt mit der höchsten Nummer so finden:
...
Aktuell = 0
Pre = "KW "
For Each Blatt In wbkXLS.Worksheets()
BN = Blatt.Name
If Left(BN, Len(Pre)) = Pre Then
Woche = CInt(Split(BN)(1))
If Woche > Aktuell Then Aktuell = Woche
End If
Next
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
...
bastla
P.S.: Verwende doch bitte "Code"-Formatierung ...
LÖSUNG 08.11.2011 um 14:48 Uhr
Moin,
mal gesetzt den Fall, daß das neue Tabellenblatt immer mit "KW " und der Kalenderwoche benannt ist, dann könnte folgende Vorgehensweise zielführend sein:
- über die Excel-Funktion (Kalenderwoche) die aktuelle Kalenderwoche herausfinden
- über die Excel-Funktion (Wochentag) den aktuellen Wochentag herausfinden
- über die Excel-Funktion (Rechts) die letzten beiden Stellen des Tabellenblattnamens herausfinden
- wenn nun die letzten beiden Stellen des Tabellenblattnamens gleich der Kalenderwoche sind und zusätzlich der Wochentag noch ein Montag, dann soll das Tabellenblatt mit dem Namen "KW xx" gedruckt werden.
- das ganze als Autostart-Makros sollte dann funktionieren.
Gruß J
chem
mal gesetzt den Fall, daß das neue Tabellenblatt immer mit "KW " und der Kalenderwoche benannt ist, dann könnte folgende Vorgehensweise zielführend sein:
- über die Excel-Funktion (Kalenderwoche) die aktuelle Kalenderwoche herausfinden
- über die Excel-Funktion (Wochentag) den aktuellen Wochentag herausfinden
- über die Excel-Funktion (Rechts) die letzten beiden Stellen des Tabellenblattnamens herausfinden
- wenn nun die letzten beiden Stellen des Tabellenblattnamens gleich der Kalenderwoche sind und zusätzlich der Wochentag noch ein Montag, dann soll das Tabellenblatt mit dem Namen "KW xx" gedruckt werden.
- das ganze als Autostart-Makros sollte dann funktionieren.
Gruß J
LÖSUNG 08.11.2011 um 15:35 Uhr
LÖSUNG 08.11.2011 um 16:03 Uhr
LÖSUNG 08.11.2011 um 16:51 Uhr
Hallo Jochem!

Aber im Ernst - wie sollte denn Dein Script gestartet, bzw wie sollte die Excel-Datei automatisch geöffnet werden, damit sich
Grüße
bastla
viele Wege führen nach Rom ...
Wenn er aber nach Wanne-Eickel will ... Aber im Ernst - wie sollte denn Dein Script gestartet, bzw wie sollte die Excel-Datei automatisch geöffnet werden, damit sich
wenn ich dann in das Geschäft komme, liegen die Aufträge der aktuellen KW schon bereit im Drucker.
realisieren lässt?Grüße
bastla
LÖSUNG 08.11.2011 um 17:04 Uhr
Moin bastla,
das sind für mich zwei Paar Schuhe: zum einen den Ausdruck starten und zum anderen das richtige Tabellenblatt finden.
Zu 1) ist sicherlich ein geplanter Task sinnvoll, der das Tabellenblatt druckt
Zu 2) ist m.M.n. das Autostart-Makro sinnvoll (liegt wahrscheinlich daran, daß ich mit vbs nix anfangen kann und daher lieber auf das zurückgreife, von dem ich meine, es zu können).
Gruß J
chem
das sind für mich zwei Paar Schuhe: zum einen den Ausdruck starten und zum anderen das richtige Tabellenblatt finden.
Zu 1) ist sicherlich ein geplanter Task sinnvoll, der das Tabellenblatt druckt
Zu 2) ist m.M.n. das Autostart-Makro sinnvoll (liegt wahrscheinlich daran, daß ich mit vbs nix anfangen kann und daher lieber auf das zurückgreife, von dem ich meine, es zu können).
Gruß J
LÖSUNG 09.11.2011 um 18:07 Uhr
Hallo bastla,
danke für die schnelle Antwort.
Ist das dann die komplette vbs Datei, denke mal nicht ?
Und wenn doch, was ist mit meinem Quellcode den ich oben gepostet habe? Muss ich den noch anfügen oder wie genau läuft das`?
Das mit der KW davor lässt sich einrichten? Soll dann jedes Tabellenblatt so benamt sein: KW 43 , rechts daneben dann KW 44 ? Geht au irgendwie KW 44/2011 ? (wenn nicht auch nicht schlimm?
Gruß
lordofremixes
danke für die schnelle Antwort.
Ist das dann die komplette vbs Datei, denke mal nicht ?
Und wenn doch, was ist mit meinem Quellcode den ich oben gepostet habe? Muss ich den noch anfügen oder wie genau läuft das`?
Das mit der KW davor lässt sich einrichten? Soll dann jedes Tabellenblatt so benamt sein: KW 43 , rechts daneben dann KW 44 ? Geht au irgendwie KW 44/2011 ? (wenn nicht auch nicht schlimm?
Gruß
lordofremixes
LÖSUNG 09.11.2011 um 18:10 Uhr
LÖSUNG 09.11.2011 um 18:16 Uhr
Hallo lordofremixes!
Mein Stückchen Code soll nur aus allen Tabellenblättern, die mit "KW" + Leerzeichen beginnen, jenes mit der höchsten Wochennummer suchen und den Ausdruck vornehmen - es ersetzt daher nur Deine bisherige Zeile
Grüße
bastla
Mein Stückchen Code soll nur aus allen Tabellenblättern, die mit "KW" + Leerzeichen beginnen, jenes mit der höchsten Wochennummer suchen und den Ausdruck vornehmen - es ersetzt daher nur Deine bisherige Zeile
wbkXLS.sheets("Tabelle1").PrintOut
Geht au irgendwie KW 44/2011
Besser wäre "KW 2012/01"(Woche immer zweistellig) - dann könnte einfach der Teil nach dem Leerzeichen als String verglichen werden - der (ungetestete) Code dazu sähe dann so aus:...
Aktuell = ""
Pre = "KW "
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 & Altuell 'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
...
bastla
LÖSUNG 09.11.2011 um 18:39 Uhr
LÖSUNG 09.11.2011 um 18:49 Uhr
Hallo bastla,
nach Ausführung diesen Codes :
kommt Windows Script Host Fehlermeldung
Skript: C:\excel\excel_letzte_KW.vbs in Zeile 10, Zeichen 1, Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht 'wbkXLS.Worksheets' Code 800A01B6 .
Weißt du wieso dieser Fehler kommt?
Gruß
lordofremixes
nach Ausführung diesen Codes :
'Datei mit einem normale Editor anlegen
' Dateiendung .VBS
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open("C:\excel\auftrag.xls", , True)
'Tabelle1 ausdrucken
Aktuell = ""
Pre = "KW "
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
'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
' Workbook schließen
wbkXLS.Close
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
Skript: C:\excel\excel_letzte_KW.vbs in Zeile 10, Zeichen 1, Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht 'wbkXLS.Worksheets' Code 800A01B6 .
Weißt du wieso dieser Fehler kommt?
Gruß
lordofremixes
LÖSUNG 09.11.2011 um 19:57 Uhr
LÖSUNG 09.11.2011 um 20:06 Uhr
LÖSUNG 09.11.2011 um 20:11 Uhr
LÖSUNG 09.11.2011 um 20:42 Uhr
LÖSUNG 13.12.2011 um 14:39 Uhr
Hallo bastla,
ich habe den Code jetzt schon im Einsatz und es läuft wunderbar.
Jetzt habe ich eine Frage um das Programm auszuweiten.
Kann ich oben bei Zeile 6:
Set wbkXLS = appXLS.Workbooks.Open("C:\excel\auftrag.xls", , True)
Auch mehrere Dateien angeben z.B. auftrag.xls, auftrag2.xls usw.. und wie oder wo gebe ich das ein?
Gruß
lordofremixes
ich habe den Code jetzt schon im Einsatz und es läuft wunderbar.
Jetzt habe ich eine Frage um das Programm auszuweiten.
Kann ich oben bei Zeile 6:
Set wbkXLS = appXLS.Workbooks.Open("C:\excel\auftrag.xls", , True)
Auch mehrere Dateien angeben z.B. auftrag.xls, auftrag2.xls usw.. und wie oder wo gebe ich das ein?
Gruß
lordofremixes
LÖSUNG 13.12.2011 um 15:29 Uhr
Hallo lordofremixes!
Da musst Du eigentlich nur ein Schleifchen um die Verabeitung der einzelnen Datei wickeln - ungetestet etwa so:
Grüße
bastla
Da musst Du eigentlich nur ein Schleifchen um die Verabeitung der einzelnen Datei wickeln - ungetestet etwa so:
Dateien = Array("C:\excel\auftrag.xls", "C:\excel\auftrag2.xls", "C:\excel\auftrag3.xls") 'zu verarbeitende Dateien
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
For Each Datei In Dateien
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open(Datei, , True)
'Tabelle1 ausdrucken
Aktuell = ""
Pre = "KW "
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
'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
' Workbook schließen
wbkXLS.Close
Next
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
bastla
LÖSUNG 14.12.2011 um 08:27 Uhr
Hallo bastla,
das funktioniert einwandfrei.. Danke !!
Jetzt hat der Mitarbeiter mich aber falsch informiert.
In seiner Exceldateien stehen schon die KW alle drin für das ganze Jahr.
Das heißt er hat schon KW 2012-01 bis KW 2012-55 drin stehn. (Hab eigentlich gedacht er erstellt jede Woche das Excelblatt neu, dem war nicht so).
Gibt es eine Möglichkeit, den Quellcode so zu verändern , das er nicht die letzte KW ausdruckt , sondern die aktuelle?
Gruß
lordofremixes
das funktioniert einwandfrei.. Danke !!
Jetzt hat der Mitarbeiter mich aber falsch informiert.
In seiner Exceldateien stehen schon die KW alle drin für das ganze Jahr.
Das heißt er hat schon KW 2012-01 bis KW 2012-55 drin stehn. (Hab eigentlich gedacht er erstellt jede Woche das Excelblatt neu, dem war nicht so).
Gibt es eine Möglichkeit, den Quellcode so zu verändern , das er nicht die letzte KW ausdruckt , sondern die aktuelle?
Gruß
lordofremixes
LÖSUNG 14.12.2011 um 09:42 Uhr
Hallo lordofremixes!
... genügt es, die Zeilen 12 bis 18 durch etwas in der Art
zu ersetzen ...
Grüße
bastla
Gibt es eine Möglichkeit, den Quellcode so zu verändern , das er nicht die letzte KW ausdruckt , sondern die aktuelle?
Wenn Du "aktuelle" (bzw "Berechnung KW") definieren kannst ...... genügt es, die Zeilen 12 bis 18 durch etwas in der Art
Aktuell = Berechnung KW
Grüße
bastla
LÖSUNG 14.12.2011 um 11:35 Uhr
LÖSUNG 14.12.2011 um 11:40 Uhr
Hallo lordofremixes!
Soferne das die verwendet Excel-Version kann (Stichwort: Funktion "KALENDERWOCHE()" verfügbar), etwa so:
Ansonsten findest Du zB hier eine Berechnungsmethode ...
Grüße
bastla
Soferne das die verwendet Excel-Version kann (Stichwort: Funktion "KALENDERWOCHE()" verfügbar), etwa so:
Aktuell = WorksheetFunction.WeekNum(Date)
Grüße
bastla
LÖSUNG 14.12.2011 um 12:49 Uhr
LÖSUNG 14.12.2011 um 13:11 Uhr
Hallo bastla,
sorry erstmal dass ich so viel frag.
ich habe folgenden code eingegeben:
Es kommt dann der Fehler Objekt erforderlich: WorksheetFunction Code 800A01A8.
Ich verstehe die Berechnungsmethode nicht.
Hoff du weißt da noch was.
Gruß
lordofremixes
sorry erstmal dass ich so viel frag.
ich habe folgenden code eingegeben:
Dateien = Array("C:\excel\auftrag.xls", "C:\excel\auftrag2.xlsx") 'zu verarbeitende Dateien
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
For Each Datei In Dateien
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open(Datei, , True)
'Tabelle1 ausdrucken
Aktuell = ""
Pre = "KW "
Aktuell = WorksheetFunction.WeekNum(Date)
MsgBox "Neuestes Blatt: " & Pre & Aktuell
'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
' Workbook schließen
wbkXLS.Close
Next
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
Ich verstehe die Berechnungsmethode nicht.
Hoff du weißt da noch was.
Gruß
lordofremixes
LÖSUNG 14.12.2011 um 19:29 Uhr
Hallo lordofremixes!
Wie ich schon erwähnte: "Soferne das die verwendete Excel-Version kann" ...
... andererseits hatte ich doch einen Link angeboten (und von dort stammt die unten verwendete Berechnungsmethode) ...
Anyhow: So könnte das auch bei Dir klappen:
Grüße
bastla
Wie ich schon erwähnte: "Soferne das die verwendete Excel-Version kann" ...
... andererseits hatte ich doch einen Link angeboten (und von dort stammt die unten verwendete Berechnungsmethode) ...
Anyhow: So könnte das auch bei Dir klappen:
Dateien = Array("C:\excel\auftrag.xls", "C:\excel\auftrag2.xlsx") 'zu verarbeitende Dateien
Pre = "KW "
kw = 4 + Date - Weekday(Date, 2)
Aktuell = (kw - DateSerial(Year(kw), 1, -6)) \ 7
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
For Each Datei In Dateien
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open(Datei, , True)
'Tabelle1 ausdrucken
MsgBox "Neuestes Blatt: " & Pre & Aktuell
'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
' Workbook schließen
wbkXLS.Close
Next
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
bastla
LÖSUNG 15.12.2011 um 09:54 Uhr
Hallo bastla,
cool cool dass du dir noch Zeit nimmst für mein Problem. Find ich wirklich super von dir!!
Wenn ich dieses Script ausführe, kommt als Meldung : Neustes Blatt: KW 50 und wenn ich dann auf OK drücke kommt ein Fehler: Zeile 15, Zeichen 5, Fehler: Index außerhalb des gültigen Bereichs. Code 800A0009 Quelle Laufzeitfehler in Microsoft VBScript und gedruckt wird nichts.
Und welche Vorraussetzungen müssen erfüllt sein, damit das Script funktioniert Muss ich die Tabellenblätter dann trotzdem so benennen? Also KW 2012-06 oder muss ich sie anders benennen?
Gruß
lordofremixes
cool cool dass du dir noch Zeit nimmst für mein Problem. Find ich wirklich super von dir!!
Wenn ich dieses Script ausführe, kommt als Meldung : Neustes Blatt: KW 50 und wenn ich dann auf OK drücke kommt ein Fehler: Zeile 15, Zeichen 5, Fehler: Index außerhalb des gültigen Bereichs. Code 800A0009 Quelle Laufzeitfehler in Microsoft VBScript und gedruckt wird nichts.
Und welche Vorraussetzungen müssen erfüllt sein, damit das Script funktioniert Muss ich die Tabellenblätter dann trotzdem so benennen? Also KW 2012-06 oder muss ich sie anders benennen?
Gruß
lordofremixes
LÖSUNG 15.12.2011 um 11:25 Uhr
Hallo lordofremixes!
Der Tabellenblattname wird (wie ja auch in Zeile 13 ausgegeben wird) aus den Variableninhalten von "Pre" und "Aktuell" zusammengesetzt - daher ggf den Inhalt von "Pre" anpassen ...
... und falls tatsächlich führende Nullen (also "06" anstatt "6") für die Wochennummer gewünscht sind, anstelle von nur "Aktuell"
verwenden.
Grüße
bastla
Der Tabellenblattname wird (wie ja auch in Zeile 13 ausgegeben wird) aus den Variableninhalten von "Pre" und "Aktuell" zusammengesetzt - daher ggf den Inhalt von "Pre" anpassen ...
... und falls tatsächlich führende Nullen (also "06" anstatt "6") für die Wochennummer gewünscht sind, anstelle von nur "Aktuell"
Right("0" & Aktuell, 2)
Grüße
bastla
LÖSUNG 20.12.2011 um 10:02 Uhr
Hallo bastla!
Ich häng immer noch an dem Script fest. Ich habe jetzt in der Exceldatei zum Testen ein Tabellenblatt mit KW 2011-51 eingefügt und darauf groß TEST geschrieben.
Es wird auch richtig erkannt.
Er bringt aber einen Fehler und druckt nichts aus.
Zeile 13, Zeichen 5. Index außerhalb des gültuigen Bereichs Code 800A0009
Verstehe diesen Fehler nicht, aber ich vermute das hier der Druckbefehl nicht richtig umgesetzt wird?
Gruß
lordofremixes
Ich häng immer noch an dem Script fest. Ich habe jetzt in der Exceldatei zum Testen ein Tabellenblatt mit KW 2011-51 eingefügt und darauf groß TEST geschrieben.
Es wird auch richtig erkannt.
Er bringt aber einen Fehler und druckt nichts aus.
Dateien = Array("C:\excel\auftrag.xls") 'zu verarbeitende Dateien
Pre = "KW "
kw = 4 + Date - Weekday(Date, 2)
Aktuell = (kw - DateSerial(Year(kw), 1, -6)) \ 7
' Excel (versteckt) öffnen
Set appXLS = CreateObject("Excel.Application")
For Each Datei In Dateien
' Workbook (versteckt) und schreibgeschützt öffnen
Set wbkXLS = appXLS.Workbooks.Open(Datei, , True)
'Tabelle1 ausdrucken
MsgBox "Neuestes Blatt: " & Pre & Aktuell
'nur zum Testen
wbkXLS.Worksheets(Pre & Aktuell).PrintOut
' Workbook schließen
wbkXLS.Close
Next
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing
Verstehe diesen Fehler nicht, aber ich vermute das hier der Druckbefehl nicht richtig umgesetzt wird?
Gruß
lordofremixes
LÖSUNG 20.12.2011 um 13:06 Uhr
LÖSUNG 21.12.2011 um 09:01 Uhr
LÖSUNG 21.12.2011 um 12:41 Uhr