Wie mache ich VBA-Code kompatibel mit Libre Office

9

Ich bin vor kurzem von Windows nach pclinuxos migriert und es scheint zu mögen. Das einzige Problem, mit dem ich konfrontiert bin, ist libreoffice, das Standard-Tabellenkalkulationspaket ist nicht mit Excel-Makros kompatibel. Unten ist der VBA-Code, den ich habe:

%Vor%

Gibt es eine Möglichkeit, diesen Code so zu konvertieren, dass er mit libreoffice kompatibel ist, oder muss ich eine völlig neue Sprache wie Python lernen? Das Lernen von Python ist kein Problem, aber es ist keine Lösung für mein Problem, da ich viele arbeitsbezogene Dateien in Excel habe, die viel VBA-Code haben und es mir nicht möglich ist, office / libreoffice bei der Arbeit zu benutzen ...

Ich möchte nur hinzufügen, dass die Funktion SinceLastWash den richtigen Wert in einigen Zellen gibt, wo ich sie benutze und in anderen gibt es einen Fehler, #NAME?

Danke

    
user3125707 13.07.2014, 15:05
quelle

5 Antworten

6

Von LibreOffice Online-Hilfedatei:

  

Mit ein paar Ausnahmen können Microsoft Office und LibreOffice nicht denselben Makrocode ausführen. Microsoft Office verwendet VBA-Code (Visual Basic für Applikationen) und LibreOffice verwendet Basic-Code basierend auf der LibreOffice-API (Application Program Interface) -Umgebung. Obwohl die Programmiersprache identisch ist, sind die Objekte und Methoden unterschiedlich.

     

Die neuesten Versionen von LibreOffice können einige Excel Visual Basic-Skripte ausführen, wenn Sie diese Funktion unter LibreOffice - PreferencesTools - Optionen - Laden / Speichern - VBA-Eigenschaften aktivieren.

In Wirklichkeit müssten Sie sich höchstwahrscheinlich mit der LibreOffice-API zusammensetzen und neu schreiben die Funktionalität.

    
RubberDuck 15.07.2014 03:18
quelle
1

Das einzige automatische Tool, das mir bekannt ist, ist Business Spreadsheets (beachte, dass ich weder persönlich noch beruflich bin Erfahrung oder irgendeine Verbindung mit der Website).

Es scheint spezifisch für OpenOffice zu sein, aber ich denke, es funktioniert auch mit LibreOffice.

Aber im Allgemeinen ist es besser, wenn Sie das selbst machen, denn das Werkzeug ist bei weitem nicht perfekt ...

    
djikay 13.07.2014 15:25
quelle
1

In LibreOffice 4.4 funktioniert das erste Unterprogramm überhaupt nicht (ich vermute, dass alle Variablen mit 'xl' beginnen. Die anderen beiden funktionieren perfekt, wenn Sie ThisCell zu ActiveCell ändern.

Statt

%Vor%

Ich verwende

%Vor%     
A. Harding 01.10.2015 19:33
quelle
1

Sie müssen die Teile, die das Dokument manipulieren, übersetzen, um die UNO-API zu verwenden. Leider kann dies schwierig sein, je nachdem, was Ihr Makro tut. Grundsätzliche Aussagen funktionieren direkt. Das Ändern eines Dokuments funktioniert normalerweise nicht.

%Vor%

Der Befehl Cells gibt eine bestimmte Zelle basierend auf einer Zeile und einer Spalte zurück. Du brauchst also die aktuelle Zeile. Hier ist etwas Verrücktheit, um die aktive Zelle zu bekommen:

%Vor%

Wenn Sie die aktive Zelle haben, erhalten Sie die Zellenadresse, und von dieser haben Sie die Zeile. Sie müssen den Bereich überhaupt nicht verwenden, da Sie sich nur um eine einzelne Zelle kümmern. Sie erhalten also das aktive Blatt und dann eine bestimmte Zelle aus dem Blatt.

In etwa so:     ThisComponent.getCurrentController (). GetActiveSheet (). GetCellByPosition (nCol, nRow) .getString ()="a"

Ich habe keine Lust herauszufinden, was das bewirkt

%Vor%     
Andrew 29.10.2015 14:19
quelle
0

Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft löscht leere Zellen, wenn ich mich nicht irre

    
Randell Graybill 11.04.2017 22:44
quelle