The "Excel Macro-Enabled Workbook" option saves as an "xlsxm" extension. It is OOXML plus proprietary Microsoft extensions. These extensions, in the form of binary blob called vbaProject.bin, represent the source code of the macros. This part of the format is not described in the OOXML specification. It does not appear to be a compiled version of the macro. I could reload the document in Excel and restore the original text of my macro, including whitespace and comments. So source code appears to be stored, but in an opaque format that defied my attempts at deciphering it.
(What's so hard about storing a macro, guys? It's frickin' text. How could you you[sic] screw it up? )
This has some interesting consequences. It is effectively a container for source code that not only requires Office to run it, but requires Office to even read it. So you could have your intellectual property in the form of extensive macros that you have written, and if Microsoft one day decides that your copy of Office is not "genuine" you could effectively be locked out of your own source code.
There is also a method to add in additional file formats for saving to, including PDF and Microsoft's XPS, but there is no native ODF support yet.
Overall, Rob's experience was a bit buggy, and there was an incident where trying to save to Open XML prompted a message about incompatible features (so much for backward compatibility, hey try the new binary-only format...).
I wonder how Novell OpenOffice.org's VBA support is going to handle the new binary information in the macro-enabled workbook? Still better than the next MS Office for Mac, I suppose.
Comments
Stephane Rodriguez
2007-01-23 17:27:47
VBA projects are encoded in bin parts in the new Office 2007 file formats, whether it's Word, Excel or Powerpoint. Those parts are the actual VBA streams that we find in older versions of the corresponding applications. That's a direct extraction.
There are other binary parts, such as printer settings parts and OLE objects parts.
The new XLSB file format pushes XLSM even further by making the important XML parts encoded in much the same way than BIFF used to do with older versions. Actually, those bin parts are christened as BIFF12. BIFF12 is undocumented right now.
I have written an article on the subject here : http://www.codeproject.com/useritems/office2007bin.asp
Roy Schestowitz
2007-01-23 17:47:52
http://openxmldeveloper.org/members/Stephane+Rodriguez.aspx
Also, yesterday's news indicate that Microsoft pays people to "bring balance" to content which speaks about Open XML. I just hope you are not being paid to post here.
In any event, your comment does not invalidate the fact that Open XML has undocumented, binary parts.
Stephane Rodriguez
2007-01-23 18:41:50
(this is on my website)
The OOXML specs are so bad I had to develop my own tool, called "diffopc", to make any progress in my product (an Excel file format component which recently added partial support for Excel 2007).
shane
2007-01-23 18:52:48
I love the fact that we do have discussions on the site, and want to encourage further discussion and corrections. I want our arguments to withstand scrutiny, and encourage any readers to question or comment on our premises.
Let's all just keep it mature, and there is no reason to post using pseudonyms folks, just type in "anonymous" or "i disagree". I still do not intend to censor any non-spam comments, nor shut down commenting after x number of days on an article, since many are still actively being viewed and linked to.
Michael
2007-09-12 14:10:29