Wie kann ich vba-code kompatibel mit libre office
Ich habe vor kurzem migriert, um pclinuxos von windows und scheinen es zu mögen. Das einzige problem, das ich konfrontiert ist, dass libreoffice die Standard-spreadsheet-Paket ist nicht kompatibel mit excel-Makros. Unten ist der vba-code habe ich:
Option VBASupport
Sub DeleteToLeft()
Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft
End Sub
Function SinceLastWash()
Application.Volatile
WashCount = 0
WearCount = 0
CurrentRow = Application.ThisCell.Row
For i = 3 To 35
If Range(Cells(CurrentRow, i), Cells(CurrentRow, i)).Value = "a" Then
WearCount = WearCount + 1
End If
If Range(Cells(CurrentRow, i), Cells(CurrentRow, i)).Value = "q" Then
WashCount = WashCount + 1
WearCount = 0
End If
Next i
SinceLastWash = WearCount
End Function
Function testhis()
testhis = Application.ThisCell.Row
End Function
Gibt es eine Möglichkeit, konvertieren Sie diesen code, um es kompatibel mit libreoffice oder muss ich lernen eine ganz neue Sprache wie python? Learning python wäre kein problem, aber keine Lösung zu meinem problem, ich habe viel Arbeit Verwandte Dateien in excel, die eine Menge von vba-code und es ist mir nicht möglich, die Nutzung von open office/libreoffice bei der Arbeit...
Ich möchte nur hinzufügen, dass die Funktion SinceLastWash gibt den richtigen Wert in Zellen wo ich es verwenden und in andere einen Fehler, dann #NAME?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie übersetzen die Teile zu manipulieren, dass das Dokument mit der UNO-API. Leider, dies kann schwierig sein, je nachdem, was dein makro macht. Basic-Anweisungen direkt. Ändern eines Dokumentes in der Regel nicht.
Den Zellen den Befehl gibt eine bestimmte Zelle basiert auf einer Zeile und Spalte. So müssen Sie die aktuelle Zeile. Hier ist es etwas Verrücktheit, um die aktive Zelle:
Wenn Sie der aktiven Zelle erhalten Sie die Adresse der Zelle, und Sie haben die Zeile. Sie nicht brauchen, um verwenden Sie die Palette, denn Sie kümmert sich nur darum, eine einzelne Zelle, so bekommen Sie das aktive Blatt und dann get eine bestimmte Zelle aus dem Blatt.
Etwas wie dieses:
ThisComponent.getCurrentController().getActiveSheet().getCellByPosition(nCol, nRow).getString() = "a"
Ich habe keine Lust, herauszufinden, was dieser tut,
Vom LibreOffice die online-Hilfe-Datei:
In der Realität, würden Sie wahrscheinlich benötigen, setzen Sie sich mit die LibreOffice-API und schreiben Sie die Funktionalität.
Nur die automatische Werkzeug, das ich bewusst bin, ist Business-Tabellen (beachten Sie, dass ich keine persönlichen oder beruflichen Erfahrungen noch in keiner Verbindung mit der Website).
Es scheint spezifisch für OpenOffice, aber ich denke, es funktioniert mit LibreOffice auch.
Im Allgemeinen jedoch, sind Sie besser dran, dies zu tun selbst, das tool ist weit von perfekt...
In LibreOffice 4.4, die erste Unterroutine wird überhaupt nicht funktionieren (ich vermute, wegen all der Variablen, beginnend mit 'xl'. Die beiden anderen perfekt funktionieren, wenn Sie ändern ThisCell zu ActiveCell.
Eher als
Ich bin mit
Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft
löscht leere Zellen, wenn ich mich nicht Irre