Integrate VB6 with the VB6.5 IDE.
Featuring the VBA SDK v6.5 + Automatic interop with VB.NET & VB6Backporter
Benefits of Visual Basic for Applications (VBA)
"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."
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."
- Microsoft Visual Basic for Applications 6.0 Software Development Kit Version 6.4/6.5 Welcome Guide
The final application host with intrinsic functions to compile native applications was VB6 with VBA 6 embedded as the front end UI editor (VBE 6). However, Visual Basic Editor 6.x continued to be refined and compatible until 2007 with Visual Basic 6.5 (VBA 6.5 w/VBE 6.5). Then, in 2010 VBA 7/VBE 7 received 64-bit support, but no additional features were added. In 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.
Then, the first working IDE clone prototype was released on 10/31/18 as announced, after only one month of development. It was called VB6Backporter.exe, and it was written in VB.NET to handle VB6 projects. Just 2 months later, an early BETA of the Visual Basic 6.5 IDE (VB65.exe) was released on 12/31/18, 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 as easy to customize as it should have been though, because in some cases you want to override the function and not tangle it up with the same name. Finding built-in controls by their id yields the best results, but in some cases you must find by index. Finding by name can fail sometimes for no reason at all, so it is not recommended if it can be avoided.
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.
Menu items can be dynamically customized by the developer with a lot of flexibility.
Mouse-wheel and touch-pad input is automatically supported out-of-the-box.
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.
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.
Options planned for 2019
Options planned for 2020+
VB6Namespaces (Optional - planned for 2019)
VB6Namespaces are a group of classes written in VB6, to duplicate VB.NET functionality. They will become available as project templates, or they can be automatically instantiated at design time. These private classes are nested so that the developer can call on them in the same way that they would in a VB.NET IDE. They are similar to VB.NET Namespaces, but there isn't a need to reference a DLL. At compile time, any unused or un-instantiated classes are to be excluded from the being compiled into the executable. In fact, this is what the new IDE was developed to handle automatically when the build process starts. Developers can get a fair portion of VB.NET code to compile in a VB6.x IDE, since many of the common Namespaces have duplicate classes visible within the scope of the project template chosen.
VB.NET Namespaces can also be directly accessed via interop. This will become available in the backporter version at some point. Basically, during the build process, before the VB6 application is compiled by VB65, the VB.NET application will search for Namespace scopes in the code and it will dynamically create the appropriate VB.NET assemblies for interop use. The VB6 application will then access these via interop, by typing in the desired Namespace and desired parameter. Pointer classes will be included in the VB65 project by default, that way the developer can use the intellisense and simply insert parameters. This is a direct way to bring the full power of VB.NET controls and Namespaces to VB6/VB65, without really complicating the development process.
"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. The VBA SDK's for version 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. Interestingly, the VBA SDK version 6.0 has a 60 day time limit and can only be installed on 5 devices.
"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/