This project is read-only.

Home Page

The home page for this project is at


ConnectBasic is a project which aims to create a macro programming system which will is easy-to-use, easy-to-integrate, and cross-platform. It is inspired by the VBA system which is available within applications such as Microsoft Office and SolidWorks, and driven by a desire to take this simple and powerful environment to other platforms, and to take it beyond VBA which has remained largely untouched for many years.

ConnectBasic aims to be a compatible superset of VBA which will interoperate well with COM on the Windows Platform, and .NET and DLR-based languages across platforms.


Current Status

ConnectBasic as it stands today is largely a prototype, I've been principally working on a number of areas:
  • Implementing a subset of the VBA programming language on top of Microsoft's DLR, and trying as best as possible to track the version of the DLR that is current in CodePlex. I've made reasonable progress on doing this, and the implementation in source control today supports defining and calling methods, arithmetic, some basic runtime functions, support for using COM objects such as Scripting.Dictionary, and more. There are however some large gaps at the moment and these are a priority of mine.
  • Implementing an IDE and extensibility constructs which will make it easier to integrate the IDE into applications. This is an ongoing project, I'm very much going down the route of writing code & refactoring until I get something useful, and the code is going to require some fairly extensive work. I've also taken a dependency on the CodeProject CodeBox control which was great from a time point of view, but not so great from a cross-platform point of view given Mono's lack of support for WPF - the code editor is an area where I think I need some serious help.
  • Devising and implementing a way of providing support for the debugging experience that people expect from modern programming systems including (in a way I'm hoping other DLR-based languages can take advantage of):
    • Breakpoints (mostly done)
    • Step In/Out/Over (mostly done)
    • Locals Inspection (mostly done) & Modification (not done)
    • Edit & Continue (not started)

In summary, the project is very much at a prototype stage, but I'm happy that the work I've done to date proves that my ultimate goal is viable.

Why Now?

Firstly, I think that Macro Programming is currently the underdog of the programming world, scripting languages are all the rage, but frankly, when it comes to integrating a programming system into an application, I'm of the opinion that the end-user, who is probably not what he or she would describe as a programmer, is after ease of use - that means the benefits that something like VBA brings for example zero/one additional files, interactive code editing & debugging, and more.

I also thing that current macro programming languages are either being left to languish (VBA) or are a step down the wrong path (VSTA) - the best bet in my opinion is to interoperate with other general/scripting/dynamic languages, but certainly not to use them ad-verbatim.

I also truly think there is considerable benefit in being able to use the same macro programming system across platforms and applications, I fully aim to make it possible to use ConnectBasic on Windows, the Mac, and Linux (although I will need help with the last two) - and moreover, as easy as possible for this to be doable by using plugin mechanisms in existing applications so that we can retrofit current applications with macro programming support.

Where Next?

I've got a game plan which I shall be posting as soon as its fully nailed down. My biggest problem is my own time commitments (I don't exactly work a 9-5 job) and my lack of familiarity with the other platforms I wish to support.

Any help and support from others would be gratefully appreciated - especially on the core language, IDE, debugging, and documentation fronts where I will be spending most of my efforts.

If anybody is interested in integrating, contributing, or deriving from, please let me know


Documentation is more of a work in progress than the code, but given this is a system which is, at one end, aimed at people who aren't likely to read the source code, good end-user documentation is of critical importance.

Documentation is going to be broken down into the following categories:

Frequently Asked Questions

As and when questions get asked, they'll be posted with answers in the Frequently Asked Questions area.

Last edited Jun 8, 2009 at 7:03 PM by PhilipStears, version 11