Click here to Skip to main content
15,867,308 members
Articles / Programming Languages / C#
Article

Build Your Own Add-in For Microsoft Office Using .NET

Rate me:
Please Sign up or sign in to vote.
3.68/5 (12 votes)
10 Dec 20052 min read 118.4K   2.7K   55   22
How to build an add-in for Microsoft applications supporting add-ins, using C#.

Sample image

Introduction

In this article, we will learn how to create a simple Hello World browser add-in for Microsoft’s applications that supports add-in. A list of such applications is given here:

  1. Microsoft Word
  2. Microsoft VSMacros IDE
  3. Microsoft Visual Studio .NET
  4. Microsoft Visio
  5. Microsoft Publisher
  6. Microsoft Project
  7. Microsoft PowerPoint
  8. Microsoft Outlook
  9. Microsoft FrontPage
  10. Microsoft Excel
  11. Microsoft Access

In this article, we will take Microsoft Outlook as an example.

Prerequisites:

You must have the following …

  1. Microsoft Development Environment 2003 or higher
  2. Microsoft .NET Framework 2.0
  3. Office Primary Interop Assemblies (PIAs). For Office XP, click here to download.

Creating the Add-in

  • Run the Microsoft Development Environment.
  • Go to File> New Project>, a dialog will appear.
  • Go to Other Projects> Extensibility Project, select Shared Add-in type project template.

Add-In Wizard

When the Add-in wizard starts, press Next...

Sample image

Select programming language (example C#), press Next.

Sample image

Select applications in which you want to host your add-in, press Next.

Sample image

Provide add-in name and description, press Next.

Sample image

Choose add-in options, press Next.

Sample image

Press Finish.

Sample image

Setup Projects

Two projects will be added automatically.

  1. Add-in project.
  2. Setup project.

Creating the Browser Form

  1. Add a form for the Add-in project, named frmHelloWorld.cs.
  2. Add a Label, TextBox, and a PictureBox.
  3. Add a Microsoft web browser control to the form (you can get it by right clicking on the toolbox, selecting Add/Remove Items, and clicking on the “COM Components”: a lot of controls will be listed, select Microsoft Web Browser Control, and press OK.
  4. With the following code, create a function go():
C#
void go()
{
    try
    {
        stbPanel1.Text="Trying to open "+tbURL+"..." ;
        object obj=new object ();
        browser.Navigate(tbURL.Text,ref obj,ref obj,ref obj,ref obj);
    }
    catch(Exception ex)
    {
        //error hanlder here......
    }
}

Call this function on the PictureBox's Click event.

Programming for Add-in Connection

Install PIAs and add a reference to the following DLL: Microsoft.Office.Interop.Outlook.DLL.

Sample image

There will be a file connect.cs in the add-in project, open it. Declare the following items globally:

C#
//for Outlook Express you can mention here word, power point. 
private Microsoft.Office.Interop.Outlook.Application applicationObject; 
private object addInInstance; 
private CommandBarButton btnLaunch;

In the function OnStartupComplete, write the following code:

C#
public void OnStartupComplete(ref System.Array custom)
{
    CommandBars commandBars = 
        applicationObject.ActiveExplorer().CommandBars;

    try
    {
        //if will be good if button exist use it
               btnLaunch= (CommandBarButton)
            commandBars["Standard"].Controls["HelloWorld"];
    }
    catch
    {
        //if error occur
                 btnLaunch = (CommandBarButton)
            commandBars["Standard"].Controls.Add(1, 
            System.Reflection.Missing.Value, 
            System.Reflection.Missing.Value, 
            System.Reflection.Missing.Value, 
            System.Reflection.Missing.Value);
        btnLaunch.Caption = "Hello World Browser!";
        btnLaunch.Style = MsoButtonStyle.msoButtonCaption;
    }
    //use tag for quick access of button.
    btnLaunch.Tag = "This is Hello World Browser!";


    btnLaunch.OnAction = "!<EMAILSTATSADDIN.CONNECT>";
    btnLaunch.Visible = true;
    btnLaunch.Click += new 
        _CommandBarButtonEvents_ClickEventHandler(
        btnLaunch_Click);
}

In the function OnBeginShutdown, write the following code:

C#
public void OnBeginShutdown(ref System.Array custom)
{
    //delete our button...
    CommandBars commandBars = applicationObject.ActiveExplorer().CommandBars;
    try
    {
        //remove on unload...
        commandBars["Standard"].Controls["HelloWorld"].Delete(
                             System.Reflection.Missing.Value);
    }
    catch(System.Exception ex)
    {
        //code to show/log error...
    }
}

Write the following code in the btnLanuch event handler:

C#
private void btnLaunch_Click(CommandBarButton Ctrl, 
                            ref bool CancelDefault)
{
    try
    {
        frmHelloWorld objfrmHelloWorld=new frmHelloWorld ();
        objfrmHelloWorld.Show();  
    }
    catch(Exception ex)
    {
        //code to show or log error...
    }
}

Rebuild and Installation

Right click on the setup project, click Rebuild, and it will automatically rebuild the add-in and the setup project. Then, right click on the setup project and click Install.

Running

Run Microsoft Outlook, and you will see “Hello World Browser!” on the toolbar. Click on it and your add-in will start. As you can see here...

Sample image

Known Issues

After uninstallation, the “Hello World Browser!” button is not removed from the Outlook toolbar.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Business Analyst Valentia Technologies
Ireland Ireland
Mubi
^^^^^^^^^^^^^^^^^^^^^^^
www.mrmubi.com

Comments and Discussions

 
Questionhow to register com add in in local machine with class library project. Pin
Sourabh111128-Nov-16 4:54
Sourabh111128-Nov-16 4:54 
QuestionActiveX control for VBA form created in C# Pin
Petr Slezák18-Feb-16 4:06
Petr Slezák18-Feb-16 4:06 
QuestionHow to in Outlook Web Access page? Pin
tiger200522-Feb-10 6:38
tiger200522-Feb-10 6:38 
GeneralHelp, How to: Create menu on MenuBar when click New/Mail Message Pin
nguyennhutoan03ct2-Jul-07 23:44
nguyennhutoan03ct2-Jul-07 23:44 
GeneralAddIn Deployment Pin
nguyennhutoan03ct27-Jun-07 22:30
nguyennhutoan03ct27-Jun-07 22:30 
AnswerRe: AddIn Deployment Pin
Mubi | www.mrmubi.com27-Jun-07 23:14
professionalMubi | www.mrmubi.com27-Jun-07 23:14 
GeneralExcel Pin
Sergey Gorchichko7-Feb-07 4:18
Sergey Gorchichko7-Feb-07 4:18 
Questiondiasymreader.dll problem Pin
al866-Dec-06 22:37
al866-Dec-06 22:37 
QuestionAssembly Office 11.0 Pin
Eckhart471116-Sep-06 0:09
Eckhart471116-Sep-06 0:09 
AnswerRe: Assembly Office 11.0 Pin
Mubi | www.mrmubi.com17-Sep-06 19:17
professionalMubi | www.mrmubi.com17-Sep-06 19:17 
QuestionDocking?? Pin
Green Egg Weasel Boy26-Jun-06 16:07
Green Egg Weasel Boy26-Jun-06 16:07 
AnswerRe: Docking?? Pin
AndySummer25-Jan-07 20:41
AndySummer25-Jan-07 20:41 
GeneralIn PowerPoint the button event is not firing. Pin
Anil_gupta5-Jun-06 4:25
Anil_gupta5-Jun-06 4:25 
GeneralExcel Worksheet Function Pin
chrisv16-Mar-06 13:17
chrisv16-Mar-06 13:17 
QuestionHow do i debug???? Pin
rajiv40422-Jan-06 1:10
rajiv40422-Jan-06 1:10 
AnswerRe: How do i debug???? Pin
Mubi | www.mrmubi.com22-Jan-06 18:04
professionalMubi | www.mrmubi.com22-Jan-06 18:04 
GeneralI got the correct .dll now Pin
halifaxdal21-Dec-05 4:21
halifaxdal21-Dec-05 4:21 
QuestionHow to add reference Pin
halifaxdal21-Dec-05 4:04
halifaxdal21-Dec-05 4:04 
AnswerRe: How to add reference Pin
Mubi | www.mrmubi.com21-Dec-05 17:49
professionalMubi | www.mrmubi.com21-Dec-05 17:49 
GeneralOutlook button bar Pin
bsieber11-Dec-05 2:05
bsieber11-Dec-05 2:05 
GeneralRe: Outlook button bar Pin
Mubi | www.mrmubi.com11-Dec-05 17:13
professionalMubi | www.mrmubi.com11-Dec-05 17:13 
GeneralRe: Outlook button bar Pin
eligazit22-Dec-05 20:36
eligazit22-Dec-05 20:36 
You need to remove the button on BeginShutDown event or DisConnect.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.