Featuring the VBA SDK v6.5 + Automatic interop with VS 2008 Shell & Visual Basic Proporter
Geared towards new project development
The Visual Basic Editor (VBE)
"The Visual Basic editor provides you with the ability to create, modify, and debug code behind the application document. This integrated development environment exists outside the host application window, enabling developers to write code in VBA and simultaneously view the results of their programming in the host application. Although the Visual Basic editor exists outside the application window, it runs in the same memory space as its host, thereby benefiting from tight integration for event handling as well as enhanced performance."
"When you host Visual Basic for Applications inside your application, you provide your users with the full power of Microsoft Visual Basic. The key technology that makes individual Windows applications programmable and also makes it easy for your users to create integrated solutions is the Component Object Model (COM) technology known as Automation (formerly called OLE Automation). Automation allows a developer to use VBA code to create and control software objects exposed by any application, dynamic-link library (DLL), or ActiveX® control that supports the appropriate programmatic interfaces."
- Microsoft Visual Basic for Applications 6.0 Software Development Kit Version 6.4/6.5 Welcome Guide
1995 - 1997 - Doug Hodges (Software Architect for the Visual Studio IDE) had been working on the product vision to create an integrated extensible IDE since the VS5 timeframe circa 1995-1997. The original design idea was going to use only VC tools to create an integrated shell, ie VC 5.0 Shell, which started the component interfaces that still exist today.
1998 - VS6 received a new COM-based shell that was developed to allow independently built things that were independent versions of each other to be plugged together. This vision appeared to be a step backwards from a single shell, since now there were 3 Shells, ie VB, VJ++, and VC++. Originally, the first extension of the shell was in the VS 6.0 timeframe and the extensibility APIs were not exposed yet. VB6 was the final application host with intrinsic functions to compile native applications. VBA 6 was embedded as the front end UI editor (VBE 6) of VB6.
1999 - In late 1998 through 1999, VB.NET was being developed to support the notion of VB6 sourced projects that allowed you to edit and compile VB6 projects inside VB.NET. However, in December of 1999 Microsoft decided to break compatibility with VB6. Although, the Visual Basic Editor 6.0 version 6.x continued to be refined until 2007 with Visual Basic 6.5 (VBA 6.5 w/VBE 6.5), the final version that can be hosted. In Office 2010, VBA 7/VBE 7 received 64-bit support, but no additional features were added. In Office 2013-2016 there were very few changes to Visual Basic with VBA 7.1/VBE 7.1. Although, Office for MAC was brought back in 2016 with a couple minor updates to VBA including a sandboxed environment by default.
2000 - VS.NET (BETA 1) was released.
2001 - VS.NET (BETA 2) was the follow up to BETA 1, that had a time expiration.
2002 - Finally, in VS.NET 2002 a single Shell was completed to be fully extensible from the ground up and designed to have independent pieces that independently plugged together. The goal was to be at least as useable as the VB product and the VC product combined, so the best features were picked from those two products. It was felt by the team that if the requirements of VB and VC could be met, that the requirements of most language partners could probably be met too. The VS.NET IDE was actually started as a clone of the VB6 code base. Some code was originally inherited from VS6. In the VS.NET IDE message looping, there is a thing called the Thunder Message Loop. Thunder was the codename for Visual Basic and Ruby was the codename for the forms package. Although, there probably isn't much of the old code leftover now, that you could point to as Thunder.
2008 - 2009 - The Visual Studio Shell was upgraded with new feature called "isolated mode", and it is the final version of VS that maintains legacy support.
10/31/18 - The first working IDE clone prototype of VB6 was released after only one month of development, as announced. It was called VB6Backporter.exe, and it was written in VB.NET to handle VB6 projects.
12/31/18 - Just 2 months later, an early BETA of the Visual Basic 6.5 IDE (VB65.exe) was released, written with VB6. It was actually backported to the VB6 format by/from its own code content (VB6Backporter.exe). There were only minor conversions left over that needed to be written by hand, so it saved a lot of development time overall. It took 2 months because the VBA SDK had to be integrated with VB6 project formatting, and filtered out for any unused VBA project formatting and unrelated menu items. The IDE wasn't that easy to customize.
Visual Basic 6.5 IDE (Latest version updates - 6/23/19)
The integration classes included with the VBA SDK have now been heavily modified to emulate VB6's intrinsic features. VB65.exe acts as the host application, with VBA embedded inside of it, sharing the same memory space. Visual Basic 6.5 can create, open, edit, and save project (.vbp;.vbg;.bas;.cls;.frm) files. It can also add/remove references and components. The intrinsic functions of VB65.exe automate the compile process to build executable files in native or p-code format, provided that a licensed copy of Visual Basic 6.0 is installed.
The layout of the development environment and its features are nearly identical to that of VB6, except that the IDE has now been updated with modern icons and the newest features of VBA's IDE/VBE.
This enhanced IDE is now flexible enough to implement all sorts of updates, since we have direct access to the object model and the events of VBA's IDE/VBE.
Known bugs of version 6/23/19
In 2004, Microsoft advertised the ability to create your own customizable VB6.0 IDE with this SDK. We plan to hook up the intrinsic functions of VB6 to duplicate the look and feel as close as possible with the newer user interface [Complete]. Then, we will add extensive customizations to the IDE feature set and the process of compiling applications [Progressed]. A layer between the IDE UI and the compiler will be created to allow Visual Basic's Auto Syntax Checker to be overridden [Started]. Code input that normally would be rejected by the syntax checker can now be accepted by this visible UI layer [proto-typed]. At compile time, this layer is converted to extend functionality or optimize code execution, and input that normally might be accepted can be rejected or transformed to be more efficient [partially implemented]. At present, there are a few missing features that are still under construction.
Current unreleased updates as of 8/13/19
Intermediate version released on 8/24/19. A Windows security update was causing an Error 5 to pop up.
Download the fix here KB4512941
As of 9/6/19, development on VB65 is temporarily suspended due to the Error 5 fiasco and the anticipated trickle down effects.
Development will continue on the VS 2008 Shell language version with ability to compile to CLR in 64 bits. Details below.
Options planned for late 2020+
Manual and automatic options to remove un-instantiated and/or unused classes before making a compiled executable file.
Work is being done to support some of the additional VB6 file formats that are missing from VBA, i.e. ctl, pag, and res, however only a little bit of progress has been made, but there is hope of limited support still. An upgrade conversion is recommended for UserControls, to take advantage of the richer .NET versions and the new Threading Model. A VB6 UserControl and a VB6 ActiveX Control is now equivalent to a .NET UserControl. A VB6 ActiveX DLL is equivalent to a .NET Class Library. A VB6 UserControl used in Web applications is equivalent to a .NET Web Control Library.
Full class properties are not available in VBA, so those VB6 code module properties will have to be handled by the host application. At present, a default header is written to the class files and other types of code modules. A solution to this may be more involved than originally thought. Progress on this may be delayed.
Developers will be able to design VB.NET forms and add VB.NET components, including seamless interop access to the control's event handlers. We can achieve this with Interop Forms Toolkit 2.0. Support for VB.NET controls will have an option to catch the events of a .NET control by its VB6 name, or with its NET equivalent name (if any vice versa). There is also a redistributable package.
"Visual Basic for Applications, or VBA, is a distinct technology commonly used for application automation and macros inside of other applications, most commonly inside Microsoft Office applications. VBA ships as a part of Office and therefore the support for VBA is governed by the support policy of Office. However, there are situations where VBA is used to call or host Visual Basic 6.0 runtime binaries and controls. In these situations, Visual Basic 6.0 supported runtime files in the OS and the extended file list are also supported when used inside of a supported VBA environment. For VB6 runtime scenarios to be supported inside VBA, all of the following must be true:
- Support statement for Visual Basic on Windows, 1/17/18
Installation of Microsoft Office is not required for the IDE to work. Interestingly, the VBA SDK version 6.0 had a 60 day time limit and can only be installed on 5 devices. The VBA SDK's for versions 6.1 through 6.5 do not have a time limit imposed on the license for integrating, evaluating, and testing embedded VB projects. The applications that are ultimately created are made with a licensed copy of VB6 installed on the developer's machine. "Effective July 1, 2015, Microsoft will no longer be requiring payment or reporting of royalties for those customers with VBA and/or VSTA Licenses. "
- Summit Software Company, FAQ about VBA SDK Support, 2018, http://summsoft.com/faq-about-vba-sdk-support/
Latest VB65.exe download: