Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make vba code compatible with libre office

I have recently migrated to pclinuxos from windows and seem to like it. The only problem I am facing is that libreoffice, the default spreadsheet package is not compatible with excel macros. Below is the vba code I have:

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

Is there a way to convert this code to make it compatible with libreoffice or do I have to learn an altogether new language like python? Learning python would not be a problem but is not a solution to my problem as I have many work related files in excel which have a lot of vba code and it is not possible for me to use open office/libreoffice at work...

I just want to add that the function SinceLastWash gives the correct value in some cells where I use it and in others gives an error, #NAME?

Thanks

like image 701
user3125707 Avatar asked Jul 13 '14 15:07

user3125707


People also ask

Does VBA work in LibreOffice?

VBA macros can be edited in the LibreOffice Basic IDE.

How do I open VBA in LibreOffice?

1)Go to Tools > Macros > Organize Macros > LibreOffice Basic on the main menu bar to open the Basic Macro dialog (Figure 1 on page 5). 2)Select your macro and click Edit to open the macro in the IDE.

Can you run macros in LibreOffice?

LibreOffice saves recorded macros using the open source LibreOffice Basic scripting language, which is an implementation of the well-known BASIC programming language. Such macros can be edited and enhanced after recording using the built-in LibreOffice Basic Integrated Development Environment (IDE).

Are LibreOffice macros compatible with Excel?

To see the macros, go to Tools → Macros → Organize Macros → LibreOffice Basic. However LibreOffice Basic is not the same language as Excel VBA, and the API is very different between the two suites. So most likely you will need to rewrite the macros for LibreOffice to get them to work.


1 Answers

From LibreOffice's online help file:

With a few exceptions, Microsoft Office and LibreOffice cannot run the same macro code. Microsoft Office uses VBA (Visual Basic for Applications) code, and LibreOffice uses Basic code based on the LibreOffice API (Application Program Interface) environment. Although the programming language is the same, the objects and methods are different.

The most recent versions of LibreOffice can run some Excel Visual Basic scripts if you enable this feature at LibreOffice - PreferencesTools - Options - Load/Save - VBA Properties.

In reality, you would most likely need to sit down with the LibreOffice API and rewrite the functionality.

like image 185
RubberDuck Avatar answered Sep 24 '22 18:09

RubberDuck