Showing posts with label Office Add-in. Show all posts
Showing posts with label Office Add-in. Show all posts

Monday, August 4, 2014

Getting worksheet from workbook when there is no such worksheet exists.

During application-level excel add-in development sometimes we need to check whether the worksheet is null or not. Consider the following lines -

string myWorkSheetName = "a_worksheet_Name";
Excel.Workbook Wb= Globals.ThisAddIn.Application.ActiveWorkbook;
Excel.Worksheet mySheet = Wb.Worksheets.get_Item(myWorkSheetName) as Excel.Worksheet;

or,

Excel.Worksheet mySheet = Wb.Worksheets[myWorkSheetName] as Excel.Worksheet;

The worksheets indexer ([]) 
or the get_Item method of Worksheets class does not return nullable object. In this case we can take advantage of LINQ -

 Excel.Worksheet mySheet = Wb.Worksheets.Cast().Where(w => w.Name == myWorkSheetName).FirstOrDefault();

If the worksheet does not found then mySheet will contain null.

Monday, June 2, 2014

MS Office Add-in development: Enable "Embed Interop Types".

Warning    1    A reference was created to embedded interop assembly 'c:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework\Microsoft.Office.Tools.Common.dll' because of an indirect reference to that assembly created by assembly 'c:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework\Microsoft.Office.Tools.Word.dll'. Consider changing the 'Embed Interop Types' property on either assembly.

Developers get this is common warning during developing add-in for Microsoft Office. Because the type equivalence feature is not enabled by default in a office project. To enable this feature go to properties of
-- Microsoft.Office.Tools.Common 
-- Microsoft.Office.Tools
-- Microsoft.Office.Tools.Word 
-- Microsoft.Office.Tools.Excel  
-- Microsoft.Office.Tools.Outlook - references and 
set "True" to "Embed Interop Types" property.

The type equivalence feature, embeds type information to the office solution. And enables the version independence at run time