VBA export
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
VBA export
Specifications
VBA file format is the main specification describing how the VBA stream looks like.
VBA in OOXML is the specification how the VBA stream is integrated into OOXML.
Tools
OLEToy is the preferred tool to inspect the VBA stream.
mso-dumper is the other way to dump the vba stream. For OOXML documents you first need to extract the vba stream through a zip application and then use vbadump.py on that file.
Code pointers
Import
VbaProject::readVbaModules in oox/source/ole/vbaproject.cxx is the starting point for the VBA import.
VbaModule::createModule and VbaModule::readSourceCode in vim oox/source/ole/vbamodule.cxx are the next interesting points.
Export
Currently all the work happens in the feature/vba-export branch. The export is currently implemented in oox/source/ole/vbaexport.cxx and should be called during the XLS and XLSX export.
For XLS the stream is already correctly integrated into the document. For XLSX we are still exporting the stream to a temporary file.
Random Notes
export non-VBA modules? (xVBACompatibility::setVBACompatibility)
xlsx vs xlsm?
doc, docx, ppt, pptx