I must admit, I have done a bit of Visual Basic for Applications programming.
In November 2008 I was asked to give a telecommunications introduction course to the 1Q2009 entry employees. I seldom need to be asked twice to give telecommunications training. So I agreed to put together a 2 day introduction for non-technical employees. I wanted to give the attendees a massive collection of slides (lots of pictures) that they could peruse at their leisure (if they were so inclined).
I wanted the slides to be absolutely compliant with the company standard (text font/size, colour, pixel perfect positioning of frames,..). I also wanted to automatically generate a detailed table of contents. All in all I had 30 chapters and 300+ pages in PowerPoint. And I knew that some-one would want, at the last minute, the chapter sequence to be changed, so I really needed automation.
So I wrote a VBA add-in for PowerPoint. Currently 11000 lines with comments, about 7500 without. It is also able to convert from the companies old PowerPoint format to a new format, and a few other tricks are built-in.
Under pressure I also use VBA for Word and Excel, but with less enthusiasm!
I hated the move from PPT2003 to PPT2007. In PPT2003 a copy/paste of a PPT object retained all of the key characteristics of the object. Not so in PPT2007. In PPT2003 I was executing one PPT slide per second, the equivalent activities in PPT2007 averaged 7 seconds. It was not that PPT2007 was slow, it was simply that in PPT2007 I had to put in lots of new code to copy the individual characteristics of an object. Ah but you might say that PPT2007 in interactive mode supports a copy with source formating, but regretably someone (Microsoft!) did not make this function available to VBA programmers.
I have started to port the code to PPT2010 but it looks like (I could be wrong) that VBA Add-Ins do not seem to sit in a common MDI environment, but instead in something like an SDI environment. I gave up trying to port the code!
The application SQLite Utility includes a OLE client that can control OLE automation compliant applications (e.g. Microsoft’s Excel, PowerPoint and Outlook, and many 3rd party applications). This application will proved a very limited , sort of VB or VBA like, interpreter!