Excel Makros - kann man diese in Open Office übernehmen ?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Excel Makros - kann man diese in Open Office übernehmen ?

Beitrag von Charly »

Hallo Klaus!

Leider ist die Makrosprache in Excel (VBA) nur teilweise kompatibel mit der Makrosprache von Calc (Starbasic). Insbesondere der Zugriff auf die Objekte ist anders.
Dir bleibt wohl eine Neuprogrammierung wohl nicht erspart.


Gruß
Charly
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Excel Makros - kann man diese in Open Office übernehmen ?

Beitrag von Karolus »

Hallo
Cells(8, 3) = Cells(8, 3) + Cells(8, 6)
Cells(8, 6).ClearContents
Es macht keinen Sinn das sich genau dieser Satz unzählige Male wiederholt. Gibts da keine Zählvariable für Zeilen- und/oder Spaltenindex?
Das ganze könnte in OOobasic vielleicht so aussehen:

Code: Alles auswählen

sub tu_was
odoc = ThisComponent 'das aktive Dokument
osheet = odoc.sheets(0) 'das erste Tabellenblatt über den Index -
'osheet = odoc.sheets().getbyName("Tabelle1") '-oder den Namen
'for i = x to z  'evtl. eine Zählschleife für den Zeilenindex ?  für x kleinsten Zeilenindex, für z den grössten eintragen
  osheet.getcellbyposition(3, i).value =_
  osheet.getcellbyposition(3, i).value + osheet.getcellbyposition(6, i).value
  osheet.getcellbyposition(3, i).clearcontents(255) ' ? siehe [1]
'next i 'evtl nächste Schleife
end sub
[1]
[2]
[3]

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Excel Makros - kann man diese in Open Office übernehmen ?

Beitrag von Charly »

Hallo Klaus!
Klaus.w. hat geschrieben: Cells(8, 3) = Cells(8, 3) + Cells(8, 6)
Cells(8, 6).ClearContents
An diesem Beispiel erkennt man am besten den Unterschied. Zellenpositionen werden in VBA in der Reihenfolge Zeile,Spalte dargestellt, in Starbasic umgekehrt. Zudem muss in Starbasic eins abgezogen werden, da hier Spalten und Zeilen ab Null gezählt werden.

Bei clearContents muss in Form einer Zahl angegeben werden, was zu löschen ist. Dabei steht 4 für Zeichen, 1 für Zahlen, 2 für Datum und Zeit, 16 für Formeln, 8 für Notizen und 32 für Formate. Die Ziffern können zusammengezählt werden, wenn verschieden Sachen gelöscht werden sollen, z.B. 4+1 für Zeichen und Zahlen.

Man muss beim Abfragen der Zelleninhalte auch zwischen Zahlen und Zeichen unterscheiden. Wenn man rechnen will nimmt man value sonst string. In deinem Beispiel gehe ich von Zahlen aus.

Und hier ist der Code allerdings ungetestet:

Code: Alles auswählen

Sub Test()
Dok = ThisComponent
Controller = Dok.getCurrentController()
Blatt = Controller.ActiveSheet
Zelle1 = Blatt.getCellByPosition(2,7)
Zelle2 = Blatt.getCellByPosition(5,7)
Zelle1.value = Zelle1.value + Zelle2.value
Zelle2.clearContents(1)
end Sub
Im übrigen solltest du mal ins Unterforum "Java und Basic" schauen. Dort ist dieses Thema etwas besser aufgehoben. Es gibt dort Links auf Informationen und viele Programmierbeispiele.

Gruß
Charly
Antworten