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.
Annoyances
VBA is annoying for some for the following reasons:
VBA's Future
The writing is already on the wall concerning VBA LifeTime
VSTA works "side by side" with VBA - VisualBasicForApplications, whereas VSTO (Visual Studio Tools For Office) can actually encapsulate VBA. See http://blogs.msdn.com/pstubbs/archive/2006/07/31/684576.aspx
The influence of VBA can be seen in Novell announcements that its customization of OpenOffice spreadsheets is to include VisualBasicForApplication? support. See http://blogs.msdn.com/pstubbs/archive/2006/07/31/684576.aspx
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