Creating Custom Task Panes Using VSTO SE – A Beginner’s Guide


In order to create Office Business Applications (OBAs), you need to understand the basics. There are a lot of blogs out there which talk about one set of features, one set of technologies, or one product. In my blog, I want to be able to cover a wide breadth of Office technologies and products so that you can understand the basics and then I can show you how to stitch all that together so that you can start building OBAs.


Before I move on with today's topic, in the webcast I did last week on Customizing the Office UI, someone ask an excellent question on whether there are any resources on customizing the ribbon with C++. Jensen Harris from the Office UX team just blogged on this a few days ago so all you C++ devs may want to check out what he has to say.


In my last post I showed you how to customize the ribbon in Excel using Visual Studio 2005 Tools for the 2007 Microsoft Office System Second Edition (VSTO SE) . So how would you create a basic custom task pane using the same tool? Let's match that ribbon up with a custom task pane in Excel, stepping through it in a step-by step manner:


STEP 1: Download VSTO SE


STEP 2: Create a new project


Startup Visual Studio 2005 and create a new project. Under your language preference node (C#, VB.NET, etc. – I'm using C#), click on the "Office" node, then the "2007 Add-ins" node, then "Excel Add-in" and click OK.


Like I mentioned in my previous post, VSTO SE gives you all the templates under the Office node so you not only get the ones for Office 2007 but for Office 2003 as well. This means that your solutions built on previous versions will run just fine if you are using VSTO SE.


STEP 3: Add a user control which will be your custom task pane


The first thing you will see is that within ThisAddIn.cs, you have two methods: ThisAddIn_Startup and ThisAddIn_Shutdown. These methods actually wrap up a lot of the methods that you would have to manually write yourself in Visual Studio 2005 sans VSTO SE. They are awesome wrapper classes that save you a lot of time. You can just get right down to work. You'll also notice that all of the appropriate references are there, no need to add the basics.


Right-click on the project file, go to add > New Item… and then click on User Control. Click ok and as you do, you will see that UserControl1.cs is added along with a form which you can add controls to from the toolbox. Behind the scenes, VSTO SE has done the work to implement ICustomTaskPaneConsumer, to make the user control COM visible so that it becomes an activeX control which can be used within the Office application. A lot less plumbing work, essentially none.


STEP 4: Replace the StartUp method of ThisAddIn class


Here's the code...first create an instance of the user control and then replace the StartUp method.


private UserControl1 ctrlTaskPane;


private void ThisAddIn_Startup(object sender, System.EventArgs e)


{


ctrlTaskPane = new UserControl1();


Microsoft.Office.Tools.CustomTaskPane ctp =


this.CustomTaskPanes.Add(ctrlTaskPane, "My Task Pane");


ctp.Visible = true;


}


What we are doing here is first instantiating the user control, adding our user control to the collection of Office custom task panes and setting the title to be "My Task Pane" and finally, making the task pane visible. The latter is required since by default the task pane is set to visible=false.


STEP 5: Ready, set, BUILD!


Build your solution and in the Solution pane under the setup project, install it. Go through the wizard, click F5 and we're done. Excel opens with a plain task pane, empty of controls (since we didn't both adding any) entitled "My Task Pane". Incredibly easy.


As I mentioned in my last post, the reason of this simplicity in programmability isn't to not right any code, the point is to write the plumbing code for you, so you won't have to. This gives developers the power and the time back to go be their productive selves and newer developers the ability to learn with less frustration.


Happy coding & experimenting!


Comments (16)

  1. Savitha says:

    Hi,

      It was good article to start custom task panes with. I am facing a problem in deploying the add-in.

      I want to create a setup for my application, because I have to deploy it to different location. When I open word, after installing my add-in application, I can’t see the custom task pane, as it is not activated. And if i try to activate it using manage COM Add-Ins, it is failing because, it shows error, failed to load dll. I even tried adding my dll path to trusted centers, but all in vain. What extra has to be done, in case of setups?

  2. Joanna_Bichsel says:

    Hmmm…

    You need to trust the code at the location where it is installed.

    Check out the following documentation:

    http://msdn2.microsoft.com/en-us/library/k64zb6we(VS.80).aspx  

    And the following deployment article:

    http://go.microsoft.com/fwlink/?LinkID=57779

    There is a custom action for trusting the customization.

    Here are a few more resources you can check out:

    http://blogs.msdn.com/mshneer/archive/2007/03/08/vsto-2005-se-deployment-paper-is-published.aspx

    http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

    plus the VSTO Dev Center:

    http://msdn2.microsoft.com/en-us/office/aa905533.aspx

  3. iicdotnet says:

     Dim ctp As Microsoft.Office.Tools.CustomTaskPane = Me.CustomTaskPanes.Add(ctrlTaskPane, "My Task Pane")

           ctp.Visible = True

    Microsoft.Office.Tools.CustomTaskPane  for this am geeting exception

  4. Joanna_Bichsel says:

    Hi iicdotnet,

    Perhaps try the following:

    Public ctp As CustomTaskPane = Nothing

    ctp = Me.CustomTaskPanes.Add(ctrlTaskPane, "My Task Pane")

    ctp.Visible = True

    A good place to validate your code would be on one of the How-To topics for creating a custom taks pane in VSTO where there are code snippets in both C# and VB.net. You can check it out here: http://msdn2.microsoft.com/en-us/library/bb508942.aspx.

    The entire How-To center can be found here: http://msdn2.microsoft.com/en-us/office/bb266408.aspx.

  5. iicdotnet says:

    Is it Possible for creating Cuatomtack pane in for MSoffice 2003 ?

    only Action pane support for VSTO ?

  6. Joanna_Bichsel says:

    Hi iicdotnet,

    Yes, you can definitely create custom task panes using VSTO for Office 2003. In VS, there is a node for Office 2003 and there you pick your project template and afterwards you’ll add a user control.

    Hope this helps,

    Joanna

  7. John says:

    Hi Joanna,

    you said that it’s possible to create a custom task pane in office 2003.

    I’m trying to create one in Word 2003 with VSTO and VS and i can’t.

    Can you show me? please?

    Thanks,

    John

  8. Joanna Bichsel says:

    Hi John,

    Let me correct myself. When you create the ctp in VSTO SE for Office 2003, it’s actually a document-level Actions Pane. Sorry for misleading you here. My mistake. This is a Word feature and not a VSTO feature. Here’s some documentation on how to do this:

    http://blogs.msdn.com/kathleen/archive/2007/01/04/vsto-for-mere-mortals-video-series.aspx

    There’s a few more in this list:

    http://blogs.msdn.com/kathleen/archive/2006/06/10/introductions.aspx

    If you have Kathleen McGrath’s VSTO for Mere Mortal’s book (which I highly suggest, she has a chapter on this as well.

    For documentation, you can find:

    http://msdn2.microsoft.com/en-us/library/7we49he1(VS.80).aspx

    http://msdn2.microsoft.com/en-us/library/kfzd656e(VS.80).aspx

    http://msdn2.microsoft.com/en-us/library/zbxt1ax4(VS.80).aspx

    http://msdn2.microsoft.com/en-us/library/h29yt5w6(VS.80).aspx

  9. Binod Singh says:

    Hi

    Creating a custom task pane in office 2007 is seems very easy and there are lot of articles on it.

    Can you tell me how to Add Application level (not Workbook level)Custom Task pane in Excel 2003 Application.

    Thanks in Advance

    Binod

  10. Joanna_Bichsel says:

    Unfortunately, creating an application level custom task pane in Word or Excel is not a supported feature in 2003. This is why you are can’t find any resources on it. You can only create Actions Panes, which are document/workbook level.

  11. firstdraft33 says:

    Thanks for the great article. I have created an addin that works great when ran through VS. However if I try to install the files or go through Excel->addins-> COM addins it get an error saying that it is not a valid Office Add-in.

    Any help would be greatly appreciated.

    Thanks

  12. Krishna says:

    Very nice , short but well detailed article.

  13. Paul Robinson says:

    Howdo boss.  Nice little blog you got going on here 🙂

    So I came across this because I’ve got a problem setting the visibility.  It works fine if I create my task pane and set Visible = true in ThisAddIn_Startup.  

    Problem comes when I try to toggle the visibility in response to an event.  In that case, calling MyTaskPaneInAPrivateVariableICreatedEarlier.Visible=false has no effect.  No exception either.  Any thoughts?

  14. Rahul says:

    Hi everyBody can ou share the code for that task pane or Action pane in word 2003, using VSTO. is it possible? Actually i am new to this and i need to creatye a POC. Please help.

  15. Rahul says:

    Hi guys i need the code at Application level.

    Thanks

    Regards

    Rahul

  16. Scott R Gall says:

    Many thanks for the simple and clear example of how to create a custom task pane.

Skip to main content