How to make Office VBA code interact with a VSTO application-level 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).
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.
- Visual Studio Tools for Office
LanguagesThis code sample contains the following programming languages:
|Visual Basic .NET||VBVstoVBAInterop|
- 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 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:
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.
Article ID: 977993 - Last Review: 12/16/2009 09:17:35 - Revision: 1.2
- kbsurveynew kbinfo kbnomt kbrapidpub kbcodefx atdownload KB977993