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.
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.
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.
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.
export non-VBA modules? (xVBACompatibility::setVBACompatibility)
xlsx vs xlsm?
doc, docx, ppt, pptx