Excel-Makro zu Calc-Makro

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Excel-Makro zu Calc-Makro

Re: Excel-Makro zu Calc-Makro

von Frank88 » Do, 08.10.2009 16:33

Hallo Micha,

den Konverter hatte ich schon gefunden und mal mit einfachen Sachen ausprobiert. Das hatte schon da so seine Schwierigkeiten - ohne daß ich weiter nachgeforscht habe, warum genau es nicht funktionierte. Ein Grund ist sicher die Anbindung an Ereignisse (BeforeDoubleClick, WorkSheetActivate etc.), ein anderer die Zuordnung zu Buttons und Menüeinträgen.
Ich habe mich dafür entschieden, das meiste neu zu machen. Einiges erscheint ja auch immer arg verbesserungsbedürftig,wenn man mit dem Abstand von ein paar Monaten nochmal auf die eigenen Machwerke schaut.
Für Interessierte:
(1) identisch, wenn man die Objektdefinition richtig macht

Code: Alles auswählen

oSheet = ThisComponent.Sheets
AnzTab=oSheet.count
(2) identisch
(3) habe ich mit ner Sub gemacht, die in jedes Projekt kopiert werden kann

Code: Alles auswählen

Sub xlDown(Tab,Col,Row as integer)
Dim oSheet as Object
oSheet = ThisComponent.Sheets
T=0
Z1=Row
do while T=0
   if not(oSheet.getbyindex(Tab).getcellbyposition(Col,Z1).string = "") then
      Z1=Z1+1
   else
      T=1
   end if
loop
Row=Z1
msgbox Row
End Sub
(4) identisch
(5) im Prinzip identisch, bei richtiger Definition der Objekte und wenn man aufpaßt, daß Zeile 1 und Spalte 1 in OOo Zeile und Spalte 0 entsprechen und vertauscht sind. Statt 'value' ist 'string' zu verwenden - auch bei Abfrage auf Formeln und Zahlenwerte oder leere ZTellen. Etwa so:

Code: Alles auswählen

if not(oSheet1.getcellbyposition(0,Z1).string = "") then
(6) identisch

Grüße, Frank

Re: Excel-Makro zu Calc-Makro

von Shuya » Di, 06.10.2009 16:02

...vielleicht ist http://www.business-spreadsheets.com/vba2oo.asp dieser Converter hilfreich?

Grüße
Micha

Re: Excel-Makro zu Calc-Makro

von Frank88 » Di, 06.10.2009 15:58

Vielen Dank für die Beiträge.

Ich war in letzter Zeit leider offline, weil ich Überstunden abbummeln mußte :lol: , konnte aber währenddessen die diversen erhältlichen Dokumente zu Makros in Calc studieren und damit meine Fragen beantworten.

Für Interessierte: Der Schlüssel zur Lösung der Probleme liegt in der Art und Weise, wie die einzelnen Objekte (Blatt, Range, Zelle) angesprochen werden. Ansonsten sind die Basic-Dialekte ja doch sehr ähnlich.

Grüße, Frank

Re: Excel-Makro zu Calc-Makro

von komma4 » Do, 24.09.2009 17:57

(3) geht bei OOo über die Methode gotoEndOfUsedArea eines SheetCellCursors

Siehe Kap. 6.22*** Which cells are used in a sheet? (*** in meiner Ausgabe) von Andrew Pitonyaks Makro Dokument

Dort auch alle anderen benötigten Anweisungen in StarBasic - weitere Fragen bitte im von Karolus angesprochenem Unterforum.

Viel Erfolg!

Re: Excel-Makro zu Calc-Makro

von Frank88 » Do, 24.09.2009 17:42

Hallo Karo,

ja die Idee, das mal zu kommentieren hatte ich auch - nur nicht zu dem Zeitpunkt, wo ich das Posting verfaßt und abgeschickt habe

(1) AnzS=sheets.count
(2) for i=1 to AnzS-1
(3) LZ=Sheets(i).Range("A1").End(xlDown).Row
(4) for j=1 to LZ
(5) if sheets(i).cells(j,1).value="Test" then
(6) msgbox "Zeile " & j
(7) sheets(AnzS).cells(j,i).value=sheets(i).cells(j,2).value
(8) endif
(9) next
(0) next

(1) zählt die Blätter einer Mappe
(2) + (0) Schleife mit Zähler für 1-Anzahl Blätter der Mappe -1
(3) ermittelt die letzte genutzt Zeile der Spalte A (über Laufvariable i in jedem Blatt)
(4) + (9) Schleife mit Zähler für Zeilen 1 bis letzte genutzte
(5) Steht im Blatt i in der Spalte1 und Zeile j der Wert "Test", sollen Zeilen (6) + (7) ausgeführt werden
(6) Ausgabe einer Meldung des Inhalts "Zeile -aktueller Schleifenzähler-"
(7) Im letzten Blatt Zeile j Spalte i eintragen: Wert aus Blatt i Zeile j Spalte 2

Den Versuch mit dem Einfügen der Zeile kann ich ja mal starten, befürchte aber, es wird nicht laufen. Das klappt nicht mal mit VB und VB.NET :?

Grüße, Frank

Re: Excel-Makro zu Calc-Makro

von Karolus » Mi, 23.09.2009 22:17

Hallo
Mal abgesehen davon das die Frage vielleicht besser ins Basic und Java forum gehört hätte, wärs auch ganz nett wenn du dazu schreibst was der gepostete Code tut. Nicht jedem hier erschliesst das durch Lesen des Codes.

Falls der VBAcode nicht allzu komplex ist, kannst du das Problem evtl. schon mit dem Einfügen der Zeile***:
Option VBASupport 1
im Kopf von jedem VBA-modul lösen.

***zumindest seit OOo3.0 evtl.auch schon 2.4 ?

Gruß Karo

Excel-Makro zu Calc-Makro

von Frank88 » Mi, 23.09.2009 21:38

Hallo Forum,

ich möchte (muß) Excel-Sheets, die Makros enthalten, zu Calc-Tabellen umstricken, die am Ende genauso funktionieren. Jetzt bin ich völliger Neuanfänger in OOo-Calc und bräuchte für den Einstieg zwecks rumprobieren Hilfe, wie hier Makros auszusehen haben. Dafür habe ich VBA-Code, der eigentlich enthält, was ich vorerst brauche und suche nun die Entsprechung in OOo-Code.

Code: Alles auswählen

AnzS=sheets.count
for i=1 to AnzS-1
   LZ=Sheets(i).Range("A1").End(xlDown).Row
   for j=1 to LZ
      if sheets(i).cells(j,1).value="Test" then
         msgbox "Zeile " & j
         sheets(AnzS).cells(j,i).value=sheets(i).cells(j,2).value
      endif
   next
next
Über Sinn und Zweckmäßigkeit muß man hier nicht nachdenken. Es enthält einfach nur die nötigen Methoden, von denen ich in OOo aber keine Ahnung habe.

Grüße, Frank

Nach oben