Visual Basic For Applications

A subset of VbClassic for scripting MicroSoft's applications, known commonly as VBA.

Credit due

MS deserves a lot of credit for this (not given as a rule)! They took a lame language (Basic), and evolved it to include support for objects. At the same time they evolved existing non-OO applications to adopt an object model architecture, and came up with a consistent, integrated tool that can exercise extensive control over all Office applications. Asked eight or ten years ago, most would have said it couldn't be done. It is suprising that its capabilities are not exploited as often as they might be.

I found its object model confusing and unnatural. A better approach is to leverage one's knowledge of the product rather than add a foreign language. See the Lotus 1-2-3 story in ComputerProgrammingForEverybody. Perhaps VBA object models were better for longer programs, but for smaller things, keyboard and menu macros mixed with formulas seem a better fit, expecially for amateur programmers or end-users.


VBA is annoying for some for the following reasons:
VBA's Future

The writing is already on the wall concerning VBA LifeTime No end in sight as of mid 2006. "Visual Studio Tools for Applications" (VSTA) in Office2007 is said to be targeted for developers and not end users. Watch for further developments.

VSTA works "side by side" with VBA - VisualBasicForApplications, whereas VSTO (Visual Studio Tools For Office) can actually encapsulate VBA. See

The influence of VBA can be seen in Novell announcements that its customization of OpenOffice spreadsheets is to include VisualBasicForApplication? support. See

Writing is on the Wall in regards to the future of VBA. In August this year, Microsoft announced they would be dropping VBA in the next version of MicrosoftOffice for the Mac. Lots of protests then but things quieted down, probably accepting the futility of it all.

Programming resources Mid 2006 Microsoft VBA reference available for download at


View edit of January 31, 2009 or FindPage with title or text search