These instructions are provided on Ubuntu 13.04 environment.
Libre Office 4.0 was the newest version that was installed in my PC. I was experimenting Macro programming in LibreOffice 4.0. Since Libre is newer the documentation provides for macro writing and the extension writing seems less. I spent days on fiding the stuff related with the topics, as I am new to this topic. Yet there are documentation linked with Apache OpenOffice project. The beginners find more troubles there.
Open Office Documentation
First open LibreOffice Writer and go through the following path.
- Tools->Macros->Organize Macros
In the last submenu you may find both ‘Libre Office Basic’ and ‘Python’. If you get this menu click Python. Then a dialog will be appeared with available Python Macros.
If you did not get ‘Python’ along with ‘LibreOfficeBasic’, below instructions will get you there. First close LibreOffice and start the ubuntu terminal. Then install the package libreoffice-script-provider-python by typing the following command.
sudo apt-get install libreoffice-script-provider-python
As I was noted this package install the python3-uno package which works with some other python version(python 3.x) rather than python 2.7. Because of that when the libraries are imported to the Macro confilcts could occur. Becuase of that I installed python-uno package which refers to the python version 2.7 by running following command on the terminal.
sudo apt-get install python-uno
It will remove the already installed python3-uno. Now when you go to Tools->Macros->OrganizeMacros both ‘LibreOfficeBasic’ and ‘Python’ will be found. When you click python you will get the dialog shown below.
LibreOffice provides only the ‘Run’ facility for Python Macros. But for LibreOfficeBasic you will get all the facilities mentioned in the dialog. The macro “HelloWorld.py” is provided by the package script provider as a sample macro and it can be seen in the dialog.
Select the macro ‘LibreOfficeMacros->HelloWorld->HelloWorldPython’ and Run it. The string ‘Hello World’ will be printed on the opened LibreOffice Document. The code of ‘HelloWorld.py’ is shown below.
def HelloWorldPython( ):
- desktop = XSCRIPTCONTEXT.getDesktop()
- model = desktop.getCurrentComponent()
- if not hasattr(model, “Text”):
- model = desktop.loadComponentFromURL(
- “private:factory/swriter”,”_blank”, 0, () )
- text = model.Text
- tRange = text.End
- tRange.String = “Hello World (in Python)”
- return None
If the macro is not found in the dialog open a text document and paste the above mentioned code and save the file as ‘HelloWorld.py‘. Then move it to the directory,
You cannot just copy and paste, use terminal to copy the file.
sudo cp file_name_with_location /usr/lib/libreoffice/share/Scripts/python
After that run the macro in LibreOffice. By following above steps you can write python macros and execute them. Try to build an extension.