6.1k Aufrufe
Gefragt in Tabellenkalkulation von kurtl Mitglied (239 Punkte)
Hallo liebe Experten,
bei folgendem Problem brauch ich Eure Hilfe.
Eine Exel Tabelle soll jeden Tag ( es ist so eine Art Tagebuch ) am Ende des Tages
also am besten wäre 23:59:59 Uhr von einem Makro selbstständig ausgedruckt werden ( Drucker und PC sind immer an ) .
Nach dem Ausdruck sollen die Daten in der Tabelle automatisch gelöscht werden,
damit die Tabelle für den nächsten Tag wieder für Eintragungen zur Verfügung steht.
Ich hab zwar ein ganz klein wenig schon mit Makros gearbeitet aber mit Ausdruck zu bestimmter Uhrzeit hab ich keine Ahnung, ich hoffe es kann mir jemand weiterhelfen.

Dank im vorraus
Gruß Kurt

19 Antworten

0 Punkte
Beantwortet von flupo Profi (17.7k Punkte)
Alles klar. Danke!
Wieder was gelernt.

Gruß Flupo
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo TheBlackBird,
hier ist wieder Kurt - der vorne bellt und hinten knurrt- (Frank Zander)
und bin jetzt etwas verwirrt.
Ich hab das Makro so wie Du beschrieben auf Arbeit ausprobiert ( dort wo ich den automatischen Ausdruck auch benötige) und der Drucker blieb stumm wie ein Fisch.
Jetzt zu Hause ich traue meinen Augen nicht - hat es funktioniert!

Auf jeden Fall aber kommt beim schließen der exel Tabelle die Fehlermeldung Laufzeitfehler 1004
und es wird dann dieser Punkt im Makro gelb markiert.

Application.OnTime datRun, "MeineProzedur", , False 'geplanten Ausdruck "abwaehlen"

Gruß Kurt

Übrigens ich bin begeistert wie viele Leute sich hier um dieses Thema kümmern.
Mein Halbwissen beschränkt sich darauf zu wissen, was ein Makro ist, es zu kopieren und wenn es funktioniert
ist alles gut - wenn nicht, Pech gehabt.
Ihr blickt hinter die Kulissen, dafür meinen Respekt!
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Da musst Du mal etwas genauer werden:
[*] Wo tritt der Fehler beim Beenden auf? Auf der Arbeit, wo auch kein Ausdruck kam? oder daheim, wo ja laut Deiner Aussage gedruckt wurde?
[*] Laufen auf dem Arbeitsrechner ueberhaupt (Auto-) Makros? (Sicherheitseinstellungen?)
[*] Laufen in der Mappe evtl. noch andere Makros?
[*] Welche ExcelVersionen laufen denn auf den jeweiligen Rechnern? (nur fuer mich zur Info, weil z.B. XL2003 da ein kleines Problem haben koennte iirc.)

Was kann passiert sein?:
[*] Ausgabe erfolgt auf dem Standarddrucker-> Drucker eingeschaltet und erreichbar? UND Auf dem RICHTIGEN Drucker die Papiere gesucht? ;-)
[*] Makro laeuft nur, wenn Excel "bereit" dafuer ist. Heisst wenn: keine Eingabe getaetigt wird und auch keine Berechnung laeuft.
Wenn zum geplanten Zeitpunkt z.B. der Cursor in einer Zelle blinkt (Eingabe nicht mit Enter oder Tab abgeschlossen wurde, dann laeuft der Druck nicht an, und dann wird auch kein erneuter Druck geplant, da ich derzeit nur eine Minute warte um den Druck zu starten.
[*] Wenn nun kein erneuter Druck geplant ist, dann laeuft das Abwaehlen beim Schliessen der Mappe in einen Fehler.
[*] Genauso wird ein Fehler enstehen, wenn man das Schliessen der Mappe einmal abbricht. Dann wird beim naechsten Schliessen ein Fehler auftauchen (Das hatte ich so nicht bedacht.)

Was kann man tun?:
[*] Wir koennen die eine Minute Wartezeit z.B. wegnehmen. Soll heissen, wenn um Mitternacht nicht gedruckt werden kann, dann wartet der Druck solang bis es halt geht. z.B. bis zum naechsten Eintrag in die Tabelle. (Wenn Excel selbst der Grund gewesen ist)
[*] Ich koennte, um den Fehler beim Schliessen zu vermeiden, den Fehler einfach ins Leere laufen lassen... Passt mir aber nicht wirklich, da dann der naechste Ausdruck ja auch nicht klappt. Da muss ich nochmal in mich gehen...

Cu
TheBlackBird ®
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo TheBlackBird,
hier wieder Kurt - Danke, dass Du Dich weiter der Sache annimmst.
Ich hab es jetzt gerade wieder auf Arbeit probiert und siehe da, jetzt hat es auch hier funktioniert.Keine Ahnung, was ich da gestern falsch gemacht habe.
Es hätte auch nichts von dem zugetroffen, was Du als mögliche Fehlerquellen genannt hast.
Natürlich laufen in dieser Tabelle dann noch andere Makros aber in meiner Testtabelle jetzt war es das einzige.
Die Exel Version ist hier auf Arbeit von 2002.
Das Problem mit der Fehlermeldung beim schließen der Tabelle besteht hier allerdings auch.
Das wäre jetzt nicht das größte Problem - die Tabelle soll ja später mal wenn alles eingerichtet ist ständig offen sein aber es wäre auch ok wenn man die Tabelle auch ohne Fehlermeldung mal schließen könnte.
Und ein weiteres "Problemchen hat sich aufgetan" - wie das immer so ist, ein Problem gelöst tauchen 10 neue auf.
Das Tabellenblatt, welches ausgedruckt werden soll ist mit einem Blattschutz belegt, damit in der Tabelle nichts verändert werden kann. Jetzt hab ich das mal ausprobiert und logischer Weise, das begreife sogar ich, kommt eine Fehlermeldung wenn das Makro nach dem drucken die Daten löschen will.
Das Makro müsste also vor dem löschen der Daten den Blattschutz aufheben und anschließend wieder herstellen.
Ich nehme an das geht nur mit einem Blattschutz ohne Kennwort.
Ich werde die Tabelle heut auf Arbeit bis morgen mal offen lassen und sehen, ob morgen genau um die selbe Zeit in diesem Fall jetzt 14:40:00 wieder der Ausdruck erfolgt.

Ich meld mich dann morgen wieder

Gruß Kurt
0 Punkte
Beantwortet von flupo Profi (17.7k Punkte)
Die Befehle zum Aufheben und entfernen des Blattschutzes:
ActiveSheet.Unprotect
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True


Wenn du ein Passwort vergeben hast, muss das auch noch als erster Parameter angegeben werden.

Gruß Flupo
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Na, da sind ja noch reichlich "Unbekannte" vorhanden, die da einen sauberen Ablauf verhindern koennten.

- Tabellenschutz z.B.: wenn das Loeschen in der Tabelle auf Grund des Schutzes in einen Fehler laeuft, Du dann die Abarbeitung des Makros abbrichst, dann wird kein erneuerter Ausdruck geplant werden-> kein neuer Ausdruck am naechsten Tag + Fehler beim Schliessen der Mappe

- Wie kommen denn die Daten in die auszudruckende Tabelle? von Hand? dann muessen ja ein paar Zellen vom Schutz ausgenommen sein!?! Hier waere es moeglich nur die ungeschuetzten Zellen auch wieder zu loeschen (bzw. deren Inhalt)
-- mittels Formeln? Dann muessen wir erst malSchauen, was da wann genau passiert

Der Idealfall fuer eine weitere Hilfe hier im Forum waere es nat. wenn Du GENAU die Mappe um die es geht mal mit allen Makros als Beispielmappe hochlaedst, damit man evtl. Fehlerquellen im Zusammenspiel mit anderen Makros ausschliessen kann. (Nat. waere es dafuer sinnvoll pers. und/oder sensible Daten entsprechend zu verfremden.) Der Aufbau und die Ablaeufe in der Mappe sollten aber so sein, wie sie es in "Wirklichkeit" nachher auch sind.) Der Schutz der einzelnen Tabellen sollte in der Beispielmappe auch so eingestellt sein, wie in der echten Mappe. Nur solltest Du dann die Passwoerter entsprechend aendern, und dann die geaenderten (Beispiel-) Passwoerter auch in der Datei oder hier im Forum bekannnt geben.

btw. Warum wird nun um 14:40:00Uhr ausgedruckt? Hast Du diese Zeit im Private "Sub Workbook_Open()" so vorgegeben? Dann darf diese Mappe (wenn der Code dem in #9 noch entspricht) aber nie zwischen 14:40Uhr und Mitternacht gestartet/geoeffnet werden. Denn dann muesste es unweigerlich zum Fehler beim Schliessen fuehren. (Ausdrucke duerften dann auch nicht stattfinden.) Entweder Du bleibst bei 23:59:59Uhr, oder es muessen entsprechende "Abfangmassnahmen" mit ins Programm integriert werden.

Cu
TheBlackBird ®
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo TheBlackBird,
ich werde versuchen Deine Fragen zu beantworten obwohl das selber alles noch nicht so genau weiß.
Die Zeit habe ich jetzt einfach mal auf 14:40:00 gesetzt, weil ich einfach nicht bis 23:59:00 warten wollte und der Ausdruck hatte ja funktioniert.
Wenn die Tabelle mal fertig ist, soll der Ausdruck definitiv immer 23:59 erfolgen.
Es handelt sich hier um ein Funktagebuch - ich arbeite in einer Funkzentrale und da müssen alle Vorgänge dokumentiert und zum Abschluß des Tages ausgedruckt und abgeheftet werden (deutsche Bürokratie eben)
Die Daten in die auzudruckende Tabelle kommen über ein Makro da hinein welches die Daten von einer "Eingabemaske" übernimmt, den Blattschutz aufhebt, die Daten überträgt und den Blattschutz wieder herstellt. Ich weiß, das klingt vielleicht ziemlich verwirrend für einen "Aussenstehenden".
Ich kann die Tabelle aber noch nicht hochladen, weil sie ist noch nicht fertig ist. Der Automatische Ausdruck ist da nur ein Baustein, aber wenn der erst mal funktioniert, wäre ich ja Dank Eurer Hilfe schon einen guten Schritt weiter. Wenn es nicht zu viel verlangt ist, müsste mir mal jemand noch erklären, wie hier eine Tabelle als Beispielmappe hochladen könnte.
Gruß Kurt
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo, hier noch mal Kurt,
mit einem Wort an Flupo.
Danke auch Dir natürlich für Dein Interesse.
Das mit dem Blattschutz hätte ich warscheinlich gerade so mit dem Makrorekorder auch hinbekommen.
Für mich ist jetzt in diesen speziellen Fall aber wichtig an welcher Stelle der Code ins Makro eingefügt werden muss. Kannst Du bitte Deinen aufgeschriebenen Code noch vervollständigen, wenn das Passwort für den Blattschutz z.B. "Kurt" wäre?

Gruß Kurt
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Oefter verwendet hier im Forum wird z.B. www.file-upload.net.
Mittels "Durchsuchen" das ExcelFile Suchen und anschliessend
mittels "Datei hochladen" eben dieses tun.
Im Anschluss erhaelst Du dann dort zwei Links angezeigt:
- DownloadLink: den Du dann hier veroeffentlichen solltest
- LoeschLink: um die Datei ggf. wieder loeschen zu koennen

Fuer mich funktioniert der "Automatische Druck" ja schon. Zumindest so wie ich es mit dem hier
von mir veroeffentlichen CodeTeil getestet habe. Auch kann ich darin, bis auf die Sache mit dem
"abgebrochenen Schliessvorgang", keine logischen Fehler finden, der zur Fehlermeldung beim
Schliessen fuehren koennte.

Um die Fehlerquelle mit der zu kurzen " Wartezeit" auszuschliessen, aendere die einzelnen Subs
einmal ab, wie folgt:

Diese ArbeitsMappe:
Option Explicit

Private Sub Workbook_Open() 'laeuft beim Mappenstart an
If Date + TimeValue("14:40:00") <= Now Then 'wenn geplante Zeit heut schon vorbei
datRun = Date + 1 + TimeValue("14:40:00") 'plane fuer morgen
Else 'sonst
datRun = Date + TimeValue("14:40:00") 'Startzeit auf Heute/14:40:00 setzen
End If
Application.OnTime datRun, "MeineProzedur" 'Ausdruck planen
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'springt vor dem Schliessen der Mappe an
If datRun > Now Then Application.OnTime datRun, "MeineProzedur", , False 'geplanten Ausdruck "abwaehlen"
End Sub


und das StandardModul:
Option Explicit

Public datRun As Date 'Variable fuer Startzeit

Public Sub MeineProzedur()
With ThisWorkbook.Worksheets("Tabelle1") 'gilt fuer Tabelle1 (!!!ANPASSEN!!!)
' .Unprotect Password:="Kurt" 'Schutz mit Passwort aufheben
.PageSetup.CenterHeader = _
"&""Arial,Fett""&10&U" & "Ausdruck vom " & Now() & "Uhr" 'CenterHeader schreiben
.PrintOut 'Ausdrucken auf StandardDrucker
.PageSetup.CenterHeader = "" 'CenterHeader loeschen
.Range(.Range("A2"), _
.Cells.SpecialCells(xlCellTypeLastCell)).ClearContents 'Inhalte unter/Rechtsvon A2 loeschen
' .Protect Password:="Kurt" 'Tabelle wieder schuetzen mit Passwort
End With
Debug.Print datRun
datRun = datRun + 1 'Startzeit auf naechsten Tag setzen
Application.OnTime datRun, "MeineProzedur" 'NEUEN Ausdruck planen
End Sub


Bis hierhin einmal
TheBlackBird ®
...