There is been some discussion over the internet about ESRI’s decision to drop Visual Basic for Applications (VBA) support after the ArcGIS version 9.4 release. There are blog entries about why this shouldn’t happen, so I decided it is time to introduce an entry on why it should go, and what you can do about it.
5 Reasons ESRI is dropping VBA support
- Microsoft has stopped licensing VBA to third party applications in 2007 (source).
- Tied with the above reason, Microsoft has also stopped any and all developments for the language, as well as the compiler and interpreter (source).
- The popular Microsoft Office for the Mac version 2008 has dropped support for VBA. Even the company that created VBA is not willing to support it in some cases (source).
- ESRI has promised to further develop the geoprocessing objects in Python. As a result, VBA and Python will be in direct competition, if they both remain. With VBA being phased out by Microsoft, ESRI is forced to enhance the support for other rapid application development languages available, and Python seems to be the choice.
- Other major vendors that used VBA (see AutoCAD) are phasing it out, as Microsoft stopped licensing it to them (source).
How to manage the migration from VBA
- Follow the ESRI sponsored lectures on migrating your VBA code to the .Net platform (source). This would bring you into a similar environment.
- Become more familiar with migrating VBA to Visual Studio and Visual Basic by following the documentation Microsoft provided (source and source).
- If you do not wish to migrate to the .Net platform (VB.Net, C#, etc), then it may be time to begin learning Python. While ESRI does not provide similar functionality as VBA to Python, the promise is there, and it would be a good time to start (source).
Since there is nothing one can do to maintain VBA support in ArcGIS, perhaps one of the above suggestions will work. The rest of the complaints will probably not be heard by ESRI, since Microsoft is not willing to listen to their corporate customers either.