Hallo willi,
Ich habe im Excel mit aufgezeichneten Makros gearbeitet, welche ich bei Bedarf anpassen konnte.
Ich selber hatte noch nie mit Excel-Makros gearbeitet, aber was ich hier schon mehrfach mitlesen konnte war, das Excel-Makros, die aufgezeichnet wurden, durch ein richtig geschriebenes Makro erheblich in der größe reduzieren liesen. Und so verhällt sich das auch hier mit Star-Basic.
Durch das mitlesen weiß ich aber auch, dass der Recorder bei Excel mehr und besser aufzeichnet als in Calc. Also für Anfänger ist Excel in dieser Hinsicht besser.
Trotzdem ist es besser wenn man sich doch mit der richtigen Programmierung befasst, egal ob in Excel oder in Calc, so zumindest meine Meinung.
Ich wollte ein einfaches Makro in der Tabelle Auswertung.ods laufen lassen mit einen Button Aktualisierung.
Das ist eine sehr wichtige Info die Du erst jetzt gegeben hast. Denn jetzt ist klar welche Datei geöffnet werden muss, und wo das Makro ausgeführt wird.
Mein Chef möchte aber nur Werte und keine Verknüpfungen in der Auswertung.ods, damit er die Tabelle weiter geben kann.
Das macht meine Beispieldatei nicht, Daten verknüpfen. Sie kopiert die Daten
zwischen den Dateien.
Ich weiß wie ich das Makro in die Tabelle Auswertung bekomme, ich scheitere bis jetzt nur am Makro-Code.
Na dann werd ich mal das ganze grob beschreiben.
Zum Thema Varibalendeklaration, die ganz am Anfang steht, siehe auch Dannenhöfer:
3.6 Welche Gültigkeit haben Variablen?
Die
Sub DialogStarten ist für den Dialog verantwortlich wo Du die Dateien auswählst.
Die
Sub VerkaufWaehlen und
Sub AuswertungWaehlen werden ausgeführt wenn Du im Dialog auf die dementsprechenden Buttons klickst. Darin wird dann die
function FileOpenDialog aufgerufen und ausgeführt die dann den Dialog zur Dateiauswahl startet, der aber nicht extra programmiert werden muss.
Und so bald eine Datei mit OK ausgewählt wurde, wird der Pfad und der Dateiname in die Variable
sVerkaufsdatei oder
sAuswertungsdatei geschrieben.
Kommen wir zur
Sub Oeffnen_und_kopieren.
' Dateien öffnen.
'
Sagt eigentlich schon alles.
Hier werden die ausgewählten Dateien, die in den jeweilgen Variablen stehen, geöffnet. Anschließend werden die geöffneten Dateien als Object
oVerkauf und
oAuswertung defeniert.
Dannenhöfer:
6.1 Öffnen/Speichern
' Die Blattnummer für Filiale1 in Verkauf rausfiltern
'
und
' Die Blattnummer für Übersicht in Auswertung rausfiltern
'
Das sind einfache Schleifen die nach den jeweiligen Namen der Blätter sucht und deren Index-Nr. in
ibV und
ibA reinschreibt. Diese Index-Nr. wird im nächstem Schritt gebraucht.
Da ich ja nicht weiß welche Index-Nr. die besagten Blätter in deinen Dateien haben, hatte ich mal eben auf die schnelle diese Schleife gebaut.
' Werte zwischen oVerkauf und oAuswertung kopieren.
'
Erst wird das Datenarray deklariert:
Dim array2d()
Und in der nächsten Zeile wird das Datenarray eingelesen, und in der folgenden Zeile wird das Datenarray dann geschrieben. Mit diesen 2 Zeilen werden die Datenbereiche von einer Datei in die andere kopiert.
Zwei Nachteile gibt es aber dabei.
1.
Formate werden nicht mit kopiert.
2.
Der Quellbereich und der Zielbereich müssen gleich groß sein.
Dannenhöfer:
7. Tabellen - Calc
Und wenn das kopieren erledigt ist, erscheint dann der Hellgrüne Hinweisdialog.
Die letzten beiden Subs sind eigentlich fast selbstredend. Dennoch ein paar kurze Worte dazu.
Sub AlleSchliessen wird ausgeführt, wenn Du im Hellgrünen Hinweisdialog auf OK klickst. Beide Dateien werden geschlossen, wobei eine aber zuvor erst noch gespeichert wird.
Sub Abbruch wird durch den Abbruch-Button ausgeführt. Beide Datein werden geschlossen, es findet kein speichern statt.
Hier noch nützliche Links für weiterführende Dokumentationen.
Die deutsche Übersetzung von "OpenOffice.org Macros Explained" findest Du hier:
http://www.uni-due.de/~abi070/ooo.html
Und das Originale:
http://www.pitonyak.org/oo.php
Außerdem empfehlenswert sind folgende Tools; Mri oder Xray. Musst Du mal googeln.
Gruß
balu