How to make Office VBA code interact with a VSTO application-level add-in

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

This article describes an All-In-One Code Framework sample that is available for download. This code sample includes a step-by-step guide about how to make Office Visual Basic for Applications (VBA) interact with a Microsoft Visual Studio Tools for Office System (VSTO) add-in.

Note The code sample that is described in this article is not intended to be used in a production environment. It is provided only for illustration. This code sample is released under the terms of the Microsoft Public License (MS-PL).

Difficulty level

Download information

To download this code sample, click the following link:


Technical overview

To access VBA object model from VSTO code, you must reference the Microsoft.Vbe.Interop.dll assembly.

Starting from Office 2003, programmatically access VBA project object model is disabled by default. You must enable this option either manually in Office application settings or programmatically modify a registry value (see VBEHelper.cs):
HKCU\Software\Microsoft\Office\12.0\<Office Application>\Security\AccessVBOM

To access the VBA project object model, use the Application.VBE property (see InteropForm.cs).

To get the VBA project associated to a specific Excel Workbook, use the Workbook.VBProject property.

In order to expose your .NET objects to VBA code in Office, you must define the class with the ComVisible attribute and the class must expose the IDispatch interface (see VstoClass.cs). Then, you can override the ThisAddIn.RequestComAddInAutomationService method to return an instance of the class (in this sample VstoClass) to VBA.

On the VBA side, you can get the object that is returned by VSTO via the COMAddIn.Object property.

To call VBA code within VSTO add-in, use the Application.Run method (see InteropForm.cs).

Note For more information about how to create the sample application and how to deploy the sample application, see the Readme.txt file that is included in the download package.

Technology category

  • Visual Studio Tools for Office


This code sample contains the following programming languages:
LanguageProject Name
Visual C#CSVstoVBAInterop
Visual Basic .NETVBVstoVBAInterop


  • Microsoft Office system 2007 or Microsoft Office system 2003
  • This sample application was created by using Visual Studio 2008 with Service Pack 1 installed.

What is All-In-One Code Framework?

All-In-One Code Framework shows most Microsoft development techniques by using code samples in different programming languages. Each example is carefully selected, composed, and documented to show one common code scenario. For more information about All-In-One Code Framework, visit the following Web site:

How to find more All-In-One Code Framework samples

To find more All-In-One Code Framework samples, you can search for kbcodefx together with related keywords on Or, you can simply click the following link:
Rapid publishing disclaimer
Microsoft corporation and/or its respective suppliers make no representations about the suitability, reliability, or accuracy of the information and related graphics contained herein. All such information and related graphics are provided "as is" without warranty of any kind. Microsoft and/or its respective suppliers hereby disclaim all warranties and conditions with regard to this information and related graphics, including all implied warranties and conditions of merchantability, fitness for a particular purpose, workmanlike effort, title and non-infringement. You specifically agree that in no event shall Microsoft and/or its suppliers be liable for any direct, indirect, punitive, incidental, special, consequential damages or any damages whatsoever including, without limitation, damages for loss of use, data or profits, arising out of or in any way connected with the use of or inability to use the information and related graphics contained herein, whether based on contract, tort, negligence, strict liability or otherwise, even if Microsoft or any of its suppliers has been advised of the possibility of damages.

Article ID: 977993 - Last Review: 12/16/2009 09:17:35 - Revision: 1.2

Microsoft Office Basic Edition 2003, Microsoft Office 2003 Personal Edition, Microsoft Office Basic 2007, Microsoft Office Professional 2007, Microsoft Office Home and Student 2007, Microsoft Office Professional Plus 2007, Microsoft Office Small Business 2007, Microsoft Office Standard 2007, Microsoft Office Ultimate 2007, Microsoft Visual Studio 2008 Academic Edition, Microsoft Visual Studio 2008 Professional Edition, Microsoft Visual Studio 2008 Standard Edition, Microsoft Visual Studio Team System 2008 Database Edition, Microsoft Visual Studio Team System 2008 Architecture Edition, Microsoft Visual Studio Team System 2008 Development Edition, Microsoft Visual Studio Team System 2008 Test Edition, Microsoft Visual Studio Team System 2008 Team Suite

  • kbsurveynew kbinfo kbnomt kbrapidpub kbcodefx atdownload KB977993