Moving from MZ-Tools 3.0 to 8.0 Part 1: Some history

This is the first post of a series to show the new features, enhancements and changes that you will find when evaluating or using the new MZ-Tools 8.0 for VBA/VB6/VB5 that I introduced in October 2015. In these three months since the release, the response to this new version has been amazing and I have received a lot of feedback, from bug reports to requests of enhancements or suggestions for new features. A theme that has emerged in some of that feedback has been that “MZ-Tools 8.0 does not behave exactly as MZ-Tools 3.0” in some area, so this first post is devoted to explain some of its history that explains why.

MZ-Tools 1.0 for VB6 was launched in October 1, 2000. Only five months later, MZ-Tools 2.0 for VB6 was released. And in November 1, 2001, MZ-Tools 3.0 for VB6 and VBA was released. After that, MZ-Tools 3.0 was basically “frozen” for almost 15 years, being the only remarkable updates the addition of support for VB5 and setups, because the initial versions required manual installation. During all those years a lot of bugs were reported and fixed, but no new feature or significant enhancement was introduced, despite the lots of requests also received. The answer was always the same: in 2002 all my developing efforts shifted towards .NET and Visual Studio. A commercial MZ-Tools 4.0 for Visual Studio .NET 2002/2003 was released in 2004, and later MZ-Tools 2005 for Visual Studio 2005, MZ-Tools 6.0 (2008) and MZ-Tools 7.0 (2012), all of them developed with the .NET Framework and for Visual Studio (.NET).

In the summer of 2012, just after the release of MZ-Tools 7.0 for Visual Studio 2005-2012, two things happened:

  • I got tired of receiving what have been the two most common support tickets for MZ-Tools 3.0 for VBA: support for Office 64-bit (introduced by Office 2010) and a setup without admin rights (to allow installations in locked-down environments without involving approval from IT staff).
  • I found the technical solutions to both problems, and decided to do something about it 🙂

I will address the setup solution in the next post, but I will explain the solution to the 64-bit support here: basically, an add-in for VB or VBA is a COM (ActiveX) component that must be registered in two ways: as COM component and as add-in for some host (VB or VBA). Office 64-bit requires 64-bit add-ins, not 32-bit add-ins, and therefore 64-bit COM components. Alas, VB6, which was used for MZ-Tools 1.0-3.0, cannot create 64-bit ActiveX dlls. To create 64-bit COM components with Microsoft technologies you need to use Visual C++ or .NET (using COM-Interop). Both approaches require rewriting completely the source code of a 32-bit add-in written in VB6, and that’s the reason you don’t see many add-ins for Office 64-bit. But I already had a MZ-Tools 7.0 for Visual Studio (.NET) written in .NET, so I “only” needed to make it work with VB6/VBA too. Well, it happens that creating an add-in with the same code base for two completely different hosts with different extensibility APIs is a major software engineering effort that requires a carefully designed architecture. Also, Microsoft removed support for add-ins in Visual Studio 2015, so I needed to convert MZ-Tools 7.0 from an “add-in” to a “package” for that host. All this took me 3 years but in July 2015 I released MZ-Tools 8.0 for Visual Studio 2005-2010 (as add-in) and VS 2012-2015 (as package) and three months later, MZ-Tools 8.0 for VB6/VB5/VBA, so there are now five MZ-Tools 8.0 flavors:

MZ-Tools 8.0 Family

All the five versions share near 80% of code at binary level, the dll that contains all the features and user interface. What does this mean?:

  • On the one hand, MZ-Tools 8.0 for VB6/VB5/VBA enjoys all the new features and enhancements that were introduced in MZ-Tools 4.0 and subsequent versions from 2002 to 2012: two toolbars, a top-level menu, multiple result tabs with refresh button, multiple error handlers, better code library, separation of personal/team options, and many others that I will show in the next posts.
  • On the other hand, no single line of MZ-Tools 3.0 has been reused. That implies that the new version 8.0 will have bugs that were not present in 3.0, and that maybe not every feature behaves exactly in the same way. About the bugs, I am fixing all of them quite quickly as they are reported (see the change log), as I did during all the years of MZ-Tools 3.0 despite being a freeware product (the last one was reported and fixed as late as August 2015). About the different behavior of some features, I have already fixed several ones to behave in the same way, and I do plan to fix other ones this new year. Rest assured that I am committed to provide the same excellent experience of the old MZ-Tools 3.0 with the minimal learning curve. Your feedback is welcome.