Select the product you need help with
- Internet Explorer
- Windows Phone
- More products
How to make Office VBA code interact with a VSTO application-level add-in
Article ID: 977993 - View products that this article applies to.
Rapid publishing disclaimerMicrosoft 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.
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).
Collapse this imageExpand this image
Download informationTo download this code sample, click the following link:
Technical overviewTo 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):
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.
LanguagesThis code sample contains the following programming languages:
Collapse this tableExpand this table
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 samplesTo find more All-In-One Code Framework samples, you can search for kbcodefx together with related keywords on support.microsoft.com. Or, you can simply click the following link:
For more information, visit the following Web sites:
Article ID: 977993 - Last Review: December 16, 2009 - Revision: 1.2