Und sie bewegt sich doch... Viele Leute vermissen in OpenOffice eine Möglichkeit, Echtzeit in ihre Spreadsheets zu bringen, so wie es in Excel-Makros durch die Methode Application.OnTime ermöglicht wird. Hier zeige ich, wie es in OpenOffice Calc erreicht werden kann.
Für ein kleines Projekt wurden in einem Calc-Dokument Planzeiten anhand einiger Randparameter berechnet. Zu den berechneten Zeitpunkten wollte ich möglichst pünktlich Aktionen ausführen. Bisher habe ich dazu die Termine manuell in ein Terminprogramm übertragen, das mich dann daran erinnerte. Da ich unnötige Arbeit verabscheue, begann ich zu forschen, ob dies nicht auch direkt in meinem Calc-Dokument zu erreichen sei. Bei meiner Internet-Recherche fand ich allerdings nur Artikel, in denen die Ansicht vertreten wurde, dass dies nicht möglich wäre.
Dann entdeckte ich im OpenOffice BASIC-Guide die Methode WAIT, die als Parameter eine Zeit in Millisekunden erwartete. In der Hoffnung, dass diese Methode kooperativ arbeiten würde, schrieb ich eine Makro-Methode mit einer Endlosschleife, in der ich einen Zellinhalt inkrementierte und anschließend eine Sekunde wartete. Voller Spannung rief ich aus meinem Spreadsheet die Methode auf und stellte erfreut fest, dass der Zelleninhalt im Sekundentakt hochgezählt wurde und ich ganz normal weiterarbeiten konnte. Auch Zellen, die von derart aktualisierten Zellen abhängen, werden automatisch aktualisiert.
Zur Veranschaulichung habe ich ein Calc-Dokument angelegt, das als "Weltzeituhr" fungiert. Damit es etwas spannender wird, habe ich die "Weltzeituhr" mit einem Start- und einem Stopp-Button versehen.-)
Hier der gesamte Quelltext des Makros:
--- hier ausschneiden ---------------------------------- Global bRun As Boolean Sub startTime() Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) bRun = TRUE While (bRun) Sheet.getCellByPosition(2, 2).Value = Now() Wait 1000 Wend End Sub Sub stopTime() bRun = FALSE End Sub --- hier ausschneiden ----------------------------------
Der Start-Button ruft die Methode "startTime()" auf und der Stopp-Button die Methode "stopTime()".
Damit habe ich nun die Grundlage, meinen automatischen Erinnerungsmechanismus direkt in Calc zu implementieren.
Vielleicht hilft es euch ja auch weiter. Über Feedback würde ich mich sehr freuen.
Das Calc-Dokument mit der Weltzeituhr zum Download. Ich habe mit der OpenOffice Version 3.0.0 gearbeitet.