Excel neuestes Tabellenblatt jeden Montag automatisch drucken

Mitglied: lordofremixes

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
30 Antworten
Mitglied: bastla
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 ...
Bitte warten ..
Mitglied: Jochem
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 :-) face-smile chem
Bitte warten ..
Mitglied: bastla
08.11.2011 um 15:35 Uhr
@Jochem
Von
Die vbs würde ich dann in den Taskplaner eintragen
hältst Du nix?

Grüße
bastla
Bitte warten ..
Mitglied: Jochem
08.11.2011 um 16:03 Uhr
Moin,

@bastla

viele Wege führen nach Rom ...

Gruß J :-) face-smile cherm
Bitte warten ..
Mitglied: bastla
08.11.2011 um 16:51 Uhr
Hallo Jochem!
viele Wege führen nach Rom ...
Wenn er aber nach Wanne-Eickel will ... ;-) face-wink

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
Bitte warten ..
Mitglied: Jochem
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 :-) face-smile chem
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: lordofremixes
09.11.2011 um 18:10 Uhr
Hallo jochem,

die Vorgehensweise ist einleuchtend, aber umsetzen könnte ich das nicht. Kein Plan wie man sowas auf die schnelle programmieren kann.

Danke trotzdem für die Antwort

Gruß
lordofremixes
Bitte warten ..
Mitglied: bastla
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
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:
Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
09.11.2011 um 18:39 Uhr
Hallo Bastla,

man kann KW 2012/01 in ein Tabellenblatt reinschreiben, es geht kein / und kein \. Nehme jetzt zum Testen KW 2012-01.

Gruß
LordofRemixes
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
09.11.2011 um 19:57 Uhr
Hallo lordofremixes!

VBS mag die Klammern nach "wbkXLS.Worksheets" nicht - lass die mal weg ...

Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
09.11.2011 um 20:06 Uhr
Hallo bastla,

das läuft einwandfrei, :) face-smile außer...
Habe "KW 2007-08" und "KW2008-08" , das Jahr wird nicht untersucht und er druckt KW2007-08.
Hast du da noch irgendwie ne Idee?

Gruß
lordofremixes
Bitte warten ..
Mitglied: bastla
09.11.2011 um 20:11 Uhr
Hallo lordofremixes!
Hast du da noch irgendwie ne Idee?
Mach mal vor 2008 ein Leerzeichen ... ;-) face-wink

Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
09.11.2011 um 20:42 Uhr
Hallo bastla,

haha das wars , hab nach KW das Leerzeichen vergessen:) face-smile
Coole Sache, ist echt ne schöne Sache. ich teste es wenn ich wieder am richtigen pc bei einer excel datei mit ca. 180 mb.

Werde dir dann Bescheid geben und die Frage lösen. Danke schonmal für die Hife.

Gruß
lordofremixes
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
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
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
14.12.2011 um 09:42 Uhr
Hallo lordofremixes!
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
zu ersetzen ...

Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
14.12.2011 um 11:35 Uhr
Hallo bastla,

was meinst du mit Berechnung KW definieren?
Ich meine damit die KW, die wir dann gerade haben.

Habe es ersetzt, es kommt aber der Fehler Anweisungsende erwartet Code 800A0401 in Zeile 10.

Gruß
lordofremixes
Bitte warten ..
Mitglied: bastla
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
Bitte warten ..
Mitglied: lordofremixes
14.12.2011 um 12:49 Uhr
Hallo bastla,

und das füge ich dann wie oben beschrieben in Zeile 12 bis 18 ein?

werde es gleich mal testen?
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
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
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
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
Bitte warten ..
Mitglied: lordofremixes
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
Bitte warten ..
Mitglied: bastla
20.12.2011 um 13:06 Uhr
Hallo lordofremixes!

Wenn Dein Tabellenblatt "KW 2011-51" heißt - woher soll dann in der Zeile 13 die Jahreszahl kommen(in "Pre" ist sie genauso wenig enthalten wie in "Aktuell")? Auch in der Ausgabe der Zeile 11 dürfte ja eigentlich nur
stehen ...

Grüße
bastla
Bitte warten ..
Mitglied: lordofremixes
21.12.2011 um 09:01 Uhr
Hallo bastla!!

ach gott ja. irgendwie stand ich da auf dem schlauch.
So eine ***.
Funktioniert einwandfrei !!

Man sollte sich den Code schon genauer anschauen!!
Was sagt diese Zeile eigentlich genauer aus?
Weekday(Date, 2) UND WARUM eigentlich 4 + date ?

gruß
lordofremixes
Bitte warten ..
Mitglied: bastla
21.12.2011 um 12:41 Uhr
Hallo lordofremixes!
Was sagt diese Zeile eigentlich genauer aus?
Lass Dir die Einzelwerte ausgeben, schlage bei Bedarf die Funktion nach und interpretiere Deine Ergebnisse - zum Ergebnis der Interpretation kannst Du mich dann (falls noch erforderlich :-) face-smile) wieder fragen ...

Grüße
bastla
Bitte warten ..
Heiß diskutierte Inhalte
Zusammenarbeit
Klimaschutz
NebellichtVor 1 TagTippZusammenarbeit56 Kommentare

Hallo friends, (friends in Anlehnung an die vielen Fs in dem englischen von FFF: fridays for future. Übrigens am 19.03.2021 gibts wieder einen globalen ...

Microsoft Office
Microsoft365 und Outlook verbinden
ratzekahl1Vor 1 TagFrageMicrosoft Office31 Kommentare

Guten Morgen zusammen, ich habe einige Probleme / Fragen. Ich habe Office 365 auf den ersten Rechnern installiert. Admin angelegt, Benutzer usw. Da ich ...

Hyper-V
ESXi free oder Windows Hyper-V Server 2019
lukas0209Vor 1 TagAllgemeinHyper-V20 Kommentare

Hallo, ich brauche ca. 2 oder 3 Windows 10 virtualisiert um Dinge zu testen. Ist es dafür sinnvoller ein Windows Hyper-V Server 2019 (kostenlos) ...

Off Topic
Nach 700 Tagen adwcleaner
altmetallerVor 1 TagAllgemeinOff Topic8 Kommentare

Hallo, ich habe in meinem Netzwerk diverse Maßnahmen, um nicht nur Angriffe, sondern auch - sagen wir mal - unerwünschte Datenabflüsse und Tracking zu ...

Server-Hardware
Was bedeuten die Abkürzungen beim HPE-Server wie z.B. NC, Mod-X?
gelöst kaineanungVor 1 TagFrageServer-Hardware19 Kommentare

Hallo Leute, ich habe ein HPE-Serverangebot vorliegen bei dem ich an 1-2 Positionen nicht weiß was diese überhaupt bedeuten. Suche ich im Internet danach ...

Netzwerkgrundlagen
DS-Lite Verständnisfrage Wireguard
gelöst fnbaluVor 1 TagFrageNetzwerkgrundlagen19 Kommentare

Hallo zusammen, bisher läuft bei mir alles klassisch. pfSense mit DDNS und ich verbinde mich mit OpenVPN in das Heimnetz und erspare mir so ...

Exchange Server
0-day Exploit Chain für Exchange Server - Patches verfügbar
kgbornVor 20 StundenInformationExchange Server6 Kommentare

Zur Info: Microsoft warnt vor einer Exploit-Chain, bei der vier 0-day-Schwachstellen für gezielte Angriffe auf Exchange per Outlook Web App kombiniert werden (eine chines. ...

Microsoft Office
Jubiläen in Outlook 2016 korrekt eintragen
imebroVor 1 TagFrageMicrosoft Office16 Kommentare

Hallo an Alle. Wir haben nur einen recht kleinen Mitarbeiterkreis. Da in der Vergangenheit schon mehrfach versäumt wurde, Kolleg/-innen zu Betriebs-Jubiläen zu gratulieren, würde ...