<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Excel</title><link>http://blogs.msdn.com/excel/default.aspx</link><description>The team blog for Microsoft Excel and Excel Services.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Preventing auto_open and Workbook_Open events from running</title><link>http://blogs.msdn.com/excel/archive/2009/12/15/preventing-auto-open-and-workbook-open-events-from-running.aspx</link><pubDate>Tue, 15 Dec 2009 19:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937216</guid><dc:creator>FredK</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/excel/comments/9937216.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9937216</wfw:commentRss><description>&lt;P&gt;Today’s author is Jan Karel Pieterse, an Excel MVP. You can find more useful tips from Jan Karel on his website: &lt;A href="http://www.jkp-ads.com/" mce_href="http://www.jkp-ads.com/"&gt;http://www.jkp-ads.com/&lt;/A&gt;. This post&amp;nbsp;provides detailed instructions&amp;nbsp;to&amp;nbsp;prevent&amp;nbsp;auto-open and Workbook-Open events from running.&lt;/P&gt;
&lt;P&gt;As a fulltime developer I oftentimes open files containing VBA and want to be able to run code. At the same time I sometimes want to prevent Workbook_Open event code or an Auto_Open macro from running. This little article shows you how to achieve that.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Excel 2010&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to low or trusted document&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If you have set your macro security to "Enable All Macros" or you have already set the document to trusted or the document is in a trusted folder, click File, Open, select your file and hold down the shift key when you click the Open button:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image001_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image001_2.gif"&gt;&lt;IMG title=clip_image001 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=324 alt=clip_image001 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image001_thumb.gif" width=357 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image001_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 1: Selecting the file from the File, Open dialog (Excel 2010)&lt;/P&gt;
&lt;P&gt;Of course your file might be listed in the Most Recently Used files (MRU) list.&amp;nbsp; In that case, hold shift when you click the file in the list:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image002_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image002_2.gif"&gt;&lt;IMG title=clip_image002 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=175 alt=clip_image002 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image002_thumb.gif" width=330 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image002_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 2: Clicking the file on the MRU (Excel 2010)&lt;/P&gt;
&lt;P&gt;Doing so will prevent the Workbook_Open event from firing and the Auto_Open macro from running.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to prompt&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If your document is not in a trusted folder, has never been set to be trusted and macro security is set to something other than enable all macros to run, you can repeat what I've shown above.&lt;/P&gt;
&lt;P&gt;Normally, if you open such a document, Excel will show the security bar. In this situation however, due to you holding down shift, Excel shows this window:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image003_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image003_2.gif"&gt;&lt;IMG title=clip_image003 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=171 alt=clip_image003 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image003_thumb.gif" width=264 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image003_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 3: Enable macros dialog (Excel 2010)&lt;/P&gt;
&lt;P&gt;Because you held down the shift button when you clicked the file in the MRU or when you clicked the Open button, you can now just click "Enable macros" and no Automacros will run.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Excel 2007&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to low or trusted document&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If you have set your macro security to "Enable All Macros" or you have already set the document to trusted or the document is in a trusted folder, click File, Open, select your file and hold down the shift key when you click the Open button:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image004_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image004_2.gif"&gt;&lt;IMG title=clip_image004 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=301 alt=clip_image004 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image004_thumb.gif" width=364 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image004_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 4: Selecting the file from the File, Open dialog (Excel 2007)&lt;/P&gt;
&lt;P&gt;Of course your file might be listed in the Most Recently Used files (MRU) list.&amp;nbsp; In that case, hold shift when you click the file in the list:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image005_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image005_2.gif"&gt;&lt;IMG title=clip_image005 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=357 alt=clip_image005 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image005_thumb.gif" width=289 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image005_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 5: Clicking the file on the MRU (Excel 2007)&lt;/P&gt;
&lt;P&gt;Doing so will prevent the Workbook_Open event from firing and the Auto_Open macro from running.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to prompt&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If your document is not in a trusted folder, has never been set to be trusted and macro security is set to something other than enable all macros to run, you can repeat what I've shown above.&lt;/P&gt;
&lt;P&gt;Normally, if you open such a document, Excel will show the security bar. In this situation however, due to you holding down shift, Excel shows this window:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image006_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image006_2.gif"&gt;&lt;IMG title=clip_image006 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=169 alt=clip_image006 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image006_thumb.gif" width=261 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image006_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 6: Enable macros dialog (Excel 2007)&lt;/P&gt;
&lt;P&gt;Because you held down the shift button when you clicked the file in the MRU or when you clicked the Open button, you can now just click "Enable macros" and no Automacros will run. &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Excel 97, 2000, XP, 2003&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to low or trusted document&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;In case your macro security is set to low, or your VBA code is signed and you have set the publisher as trusted, you must hold down the shift key when you click the Open button on the File, Open dialog:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image007_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image007_2.gif"&gt;&lt;IMG title=clip_image007 style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=238 alt=clip_image007 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image007_thumb.gif" width=366 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image007_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 7: Opening the file from the File, Open dialog (Excel 97-2003)&lt;/P&gt;
&lt;P&gt;Of course your file might be listed in the Most Recently Used files (MRU) list.&amp;nbsp; In that case, hold shift when you click the file in the list:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image008_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image008_2.gif"&gt;&lt;IMG title=clip_image008 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=299 alt=clip_image008 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image008_thumb.gif" width=223 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image008_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig. 8: Clicking the file on the MRU (Excel 97-2003)&lt;/P&gt;
&lt;P&gt;Doing so will prevent the Workbook_Open event from firing and the Auto_Open macro from running.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Macro security set to medium or higher&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If your macro security is set to at least "Medium" and you have never set its publisher to trusted (for a signed macro) you can forget about holding shift when opening the file or clicking the file on the MRU list. Instead, you must hold shift when you enable macros:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image009_2.gif" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image009_2.gif"&gt;&lt;IMG title=clip_image009 style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=142 alt=clip_image009 src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image009_thumb.gif" width=270 border=0 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Preventingauto_openandWorkbook_Openevent_9D84/clip_image009_thumb.gif"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Fig.9: Hold shift when you press Enable macros&lt;/P&gt;
&lt;P&gt;Doing so will prevent the Workbook_Open event from firing and the Auto_Open macro from running.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937216" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Power+Tips/default.aspx">Power Tips</category></item><item><title>Daniel’s Extreme Lookup Collection</title><link>http://blogs.msdn.com/excel/archive/2009/12/10/daniel-s-extreme-lookup-collection.aspx</link><pubDate>Thu, 10 Dec 2009 23:08:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9935420</guid><dc:creator>FredK</dc:creator><slash:comments>15</slash:comments><comments>http://blogs.msdn.com/excel/comments/9935420.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9935420</wfw:commentRss><description>&lt;p&gt;Today’s author is Daniel Wiesenfeld, an Excel and Access Power User who is sharing his Extreme Lookup Collection with us so we can use the Excel User Defined Functions (UDFs) he created to enhance the lookup functionality. His web site &lt;a href="http://daanalytics.com"&gt;daanalytics.com&lt;/a&gt; is currently under construction and should be available soon.&lt;/p&gt;  &lt;p&gt;In the Visual Basic Editor, insert a Module and paste the following code:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;' XVLOOKUP (&amp;amp; XHLOOKUP)&lt;/span&gt;
&lt;span class="rem"&gt;' Works just like a vlookup (and hlookup) except that the user refers to a lookup colum (or row)&lt;br /&gt;' rather than a range, &lt;/span&gt;&lt;span class="rem"&gt;it is 0 based and the user can &amp;quot;look left&amp;quot; (or &amp;quot;look upward&amp;quot;) by using a negative&lt;br /&gt;' column (or row) index.&lt;/span&gt;
&lt;span class="rem"&gt;' There is also an optional argument to allow the user to offset the cell to be returned by any number&lt;br /&gt;' of rows (or columns)&lt;/span&gt;
&lt;span class="rem"&gt;' I do not give users the option to choose between exact or approximate match - it is always exact&lt;/span&gt;

&lt;span class="kwrd"&gt;Function&lt;/span&gt; XVLOOKUP(Lookup_Column &lt;span class="kwrd"&gt;As&lt;/span&gt; Range, Lookup_Value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Variant&lt;/span&gt;, Column_Index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;, _
    &lt;span class="kwrd"&gt;Optional&lt;/span&gt; Row_Offset &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DCol, DRow &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DSheet, strCRange, strARange &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; ARange &lt;span class="kwrd"&gt;As&lt;/span&gt; Range


DCol = Lookup_Column.Column
DCol = DCol + Column_Index

&lt;span class="kwrd"&gt;If&lt;/span&gt; IsMissing(Row_Offset) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
    Row_Offset = 0
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

DSheet = Lookup_Column.Parent.Name
strCRange = Lookup_Column.Address

DRow = WorksheetFunction.Match(Lookup_Value, Worksheets(DSheet).Range(strCRange), 0)
DRow = DRow + (Lookup_Column.Row - 1) + Row_Offset

&lt;span class="kwrd"&gt;Set&lt;/span&gt; ARange = Range(Cells(DRow, DCol), Cells(DRow, DCol))
strARange = ARange.Address

XVLOOKUP = Worksheets(DSheet).Range(strARange).Value

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; XHLOOKUP(Lookup_Row &lt;span class="kwrd"&gt;As&lt;/span&gt; Range, Lookup_Value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Variant&lt;/span&gt;, Row_Index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;, _
    &lt;span class="kwrd"&gt;Optional&lt;/span&gt; Column_Offset &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DCol, DRow &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DSheet, strRRange, strARange &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; ARange &lt;span class="kwrd"&gt;As&lt;/span&gt; Range


DRow = Lookup_Row.Row
DRow = DRow + Row_Index

&lt;span class="kwrd"&gt;If&lt;/span&gt; IsMissing(Column_Offset) &lt;span class="kwrd"&gt;Then&lt;/span&gt;
    Column_Offset = 0
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

DSheet = Lookup_Row.Parent.Name
strRRange = Lookup_Row.Address

DCol = WorksheetFunction.Match(Lookup_Value, Worksheets(DSheet).Range(strRRange), 0)
DCol = DCol + (Lookup_Row.Column - 1) + Column_Offset

&lt;span class="kwrd"&gt;Set&lt;/span&gt; ARange = Range(Cells(DRow, DCol), Cells(DRow, DCol))
strARange = ARange.Address

XHLOOKUP = Worksheets(DSheet).Range(strARange).Value

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;

&lt;span class="rem"&gt;'XVHLOOKUP&lt;/span&gt;
&lt;span class="rem"&gt;'looks up value in a range based on column and row headers&lt;/span&gt;
&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; XVHLOOKUP(Lookup_Range &lt;span class="kwrd"&gt;As&lt;/span&gt; Range, Row_Header &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Variant&lt;/span&gt;, Column_Header &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Variant&lt;/span&gt;)

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DCol, DRow, TRow, BRow, LCol, RCol &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DSheet, strCRange, strRRange, strARange &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; CRange, RRange, ARange &lt;span class="kwrd"&gt;As&lt;/span&gt; Range
DSheet = Lookup_Range.Parent.Name

TRow = Lookup_Range.Row
BRow = TRow + Lookup_Range.Rows.Count - 1

LCol = Lookup_Range.Column
RCol = LCol + Lookup_Range.Columns.Count - 1


&lt;span class="kwrd"&gt;Set&lt;/span&gt; CRange = Range(Cells(TRow, LCol), Cells(BRow, LCol))
strCRange = CRange.Address

DRow = WorksheetFunction.Match(Row_Header, Worksheets(DSheet).Range(strCRange), 0)
DRow = DRow + Lookup_Range.Row - 1

&lt;span class="kwrd"&gt;Set&lt;/span&gt; RRange = Range(Cells(TRow, LCol), Cells(TRow, RCol))
strRRange = RRange.Address

DCol = WorksheetFunction.Match(Column_Header, Worksheets(DSheet).Range(strRRange), 0)
DCol = DCol + Lookup_Range.Column - 1

&lt;span class="kwrd"&gt;Set&lt;/span&gt; ARange = Range(Cells(DRow, DCol), Cells(DRow, DCol))
strARange = ARange.Address

XVHLOOKUP = Worksheets(DSheet).Range(strARange).Value

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;


&lt;span class="rem"&gt;'XLOOKUP&lt;/span&gt;
&lt;span class="rem"&gt;'Looks up value in a range and returns value of cell that is a specified number of rows and columns&lt;br /&gt;'away from lookup cells&lt;/span&gt;

&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; XLOOKUP(Lookup_Range &lt;span class="kwrd"&gt;As&lt;/span&gt; Range, Lookup_Value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Variant&lt;/span&gt;, _
    Row_Offset &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;, Column_Offset &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)

&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DRow, DCol &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; DSheet, DAddress, strARange &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
&lt;span class="kwrd"&gt;Dim&lt;/span&gt; ARange &lt;span class="kwrd"&gt;As&lt;/span&gt; Range

DRow = Lookup_Range.Find(Lookup_Value).Row
DCol = Lookup_Range.Find(Lookup_Value).Column

DRow = DRow + Row_Offset
DCol = DCol + Column_Offset

DSheet = Lookup_Range.Parent.Name

&lt;span class="kwrd"&gt;Set&lt;/span&gt; ARange = Range(Cells(DRow, DCol), Cells(DRow, DCol))
strARange = ARange.Address

XLOOKUP = Worksheets(DSheet).Range(strARange)

&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935420" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Power+Tips/default.aspx">Power Tips</category></item><item><title>Introducing the JavaScript Object Model for Excel Services in SharePoint 2010</title><link>http://blogs.msdn.com/excel/archive/2009/11/30/introducing-the-javascript-object-model-for-excel-services-in-sharepoint-2010.aspx</link><pubDate>Tue, 01 Dec 2009 05:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9930573</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/excel/comments/9930573.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9930573</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to &lt;/EM&gt;&lt;A href="http://cstich.com/ExcelServices.aspx" mce_href="http://cstich.com/ExcelServices.aspx"&gt;&lt;EM&gt;Christian Stich&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;, a consultant working on Excel Services projects, for putting together this series on the Excel Services JavaScript Object Model.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Excel Services 2010 has added two entirely new programming APIs: The REST API which I covered in an earlier series of &lt;A href="http://blogs.msdn.com/excel/archive/2009/11/04/simple-access-to-spreadsheet-data-using-the-excel-services-2010-rest-api.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/11/04/simple-access-to-spreadsheet-data-using-the-excel-services-2010-rest-api.aspx"&gt;posts&lt;/A&gt; and the JavaScript Object Model (JSOM) which I will discuss in this post.&lt;/P&gt;
&lt;P&gt;The JavaScript Object Model (JSOM) enables a whole new set of solutions using Excel Services. With the JSOM it is possible to detect and react to a user's interactions with an Excel Web Access (EWA) web part and to programmatically interact with one or multiple EWA web parts.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;How Do I Use It?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Using the JSOM is done by inserting JavaScript code on the page that contains the EWA web part(s). This can be done either by adding the code to the web part page using the Content Editor web part or by directly editing the .aspx page itself.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;What Does It Offer?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;The JSOM enables the developer to access items such as sheets, ranges, tables, PivotTables, and charts. It is possible to set and retrieve values from individual cells or from Excel style A1 ranges or named ranges. The JSOM also provides for events that are raised when the user changes the active selection or active cell or when the user starts editing a cell. Moreover, the JSOM can be used to scroll to a different region and to switch the displayed sheet or named item. &lt;/P&gt;
&lt;P&gt;To see the class diagram for the JSOM please click the thumbnail below.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb.png" width=36 height=46 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Please note that the class diagram is preliminary and may have some changes at the time when Excel Services 2010 is officially released.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Using the JSOM - A Simple Example&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Often people want to use an EWA web part as a data source. EWA web parts can consume data via SharePoint's web part filter framework. However the opposite, using EWA web parts as data sources is not supported by SharePoint 2010.&lt;/P&gt;
&lt;P&gt;The example showcases using the JSOM for the detection of user events in one EWA and using those user events and corresponding data to programmatically drive another EWA. This can be used to effectively use an EWA as a data source.&lt;/P&gt;
&lt;P&gt;All the developer or user has to do apart from building a web part page with two EWA web parts is to add a Content Editor web part and link it to a file containing the JavaScript code such as the example below.&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;script type=&lt;SPAN style="COLOR: #a31515"&gt;"text/javascript"&lt;/SPAN&gt;&amp;gt; 
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;// initialize variables &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; EWA1 = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; EWA2 = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;//set page event handlers for onload, proceed to the PageLoad function defined below once the page has loaded &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; (window.attachEvent) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;window.attachEvent(&lt;SPAN style="COLOR: #a31515"&gt;"onload"&lt;/SPAN&gt;, PageLoad); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;//proceed to the GetEWA function defined below once the Excel Services JavaScript OM is 'ready' &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; PageLoad() &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ewa.EwaControl.add_applicationReady(GetEwa); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;//attach to the individual Excel Web Access (EWA) web parts &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; GetEwa() &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EWA1 = Ewa.EwaControl.getInstances().getItem(0); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EWA2 = Ewa.EwaControl.getInstances().getItem(1); &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;(EWA1 &amp;amp;&amp;amp; EWA2) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: green"&gt;// add the event handler for the ActiveSelectionChanged event &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;EWA1.add_activeSelectionChanged(activeSelectionChangedHandler); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;// This is the handler for the ActiveSelectionChanged event.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;// When the user changes the selection in the EWA web part, this event is raised &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; activeSelectionChangedHandler(rangeArgs) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; sel = rangeArgs.getRange(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; sheet = sel.getSheet().getName(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; values = rangeArgs.getFormattedValues(); &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Make sure that the user selected cells on Sheet1 - we may not want any or a different action taken if the user is on a different sheet &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;(sheet = &lt;SPAN style="COLOR: #a31515"&gt;"Sheet1"&lt;/SPAN&gt;) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: green"&gt;// Check to see if the user has clicked on cells A1, A2, B1, or B2 which act as buttons to select the view of the other web part &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;(sel.getColumn() &amp;gt;= 1 &amp;amp;&amp;amp; sel.getColumn() &amp;lt;=2 &amp;amp;&amp;amp; sel.getRow() &amp;gt;= 1 &amp;amp;&amp;amp; sel.getRow() &amp;lt;= 2) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EWA2.getActiveWorkbook().getNamedItems().getItemByName(values[0][0]).activateAsync(activateCallBack,values[0][0]); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Check to see if the user has clicked on cells A5 through A14 which contain the company names - copy the selected names to the other web part &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/SPAN&gt;(sel.getColumn() == 1 &amp;amp;&amp;amp; sel.getColumnCount() == 1 &amp;amp;&amp;amp; sel.getRow() &amp;gt;= 5 &amp;amp;&amp;amp; sel.getRowCount() &amp;lt;= 10)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EWA2.getActiveWorkbook().getRange(&lt;SPAN style="COLOR: #a31515"&gt;'Stocks'&lt;/SPAN&gt;,1,1,values.length,1).setValuesAsync(values,setCallBack,&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; activateCallBack(returnValues) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// All we are doing here is to set the status of the window to indicate that the named item has been activated in the second web part &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// We could also do nothing in this case - in other scenarios, it may be desirable or necessary to run code once an asynchronous function completes running &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;window.status = &lt;SPAN style="COLOR: #a31515"&gt;'Activated Named Item "'&lt;/SPAN&gt; + returnValues.getUserContext() +&lt;SPAN style="COLOR: #a31515"&gt;'" in "Detailed Info" EWA Web Part'&lt;/SPAN&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;} &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; setCallBack(returnValues) &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// All we are doing here is to set the status of the window to indicate that the data was copied from the first web part to the second web part &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;window.status = &lt;SPAN style="COLOR: #a31515"&gt;'Selected values have been copied from the "StockInfo" EWA Web Part to the "Detailed Info" EWA Web Part'&lt;/SPAN&gt;; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;/P&gt;&lt;/SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&amp;lt;/script&amp;gt; 
&lt;P mce_keep="true"&gt;&lt;/SPAN&gt;So, let's see what these few lines of JavaScript code that we have embedded on the web part page can do.&lt;/P&gt;
&lt;P&gt;The web part on the left side contains four "buttons" (cells A1, A2, B1, and B2) which contain strings that correspond to named items present in the web part on the right hand side. "Market Cap", "Volume", "P/E Ratio" are charts and "Stocks" is a named range.&lt;/P&gt;
&lt;P&gt;Below these "buttons" is a list of company names - these do not have to be fixed and could be changed or new ones could be added by a viewer of the web part page. Next to the company names is the most recent share price of each company's stock. This data as well as the other stock market data used in this example could be live data retrieved either via Excel Services external data support, or via User Defined Functions.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_1.png" width=572 height=228 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The viewer of the web part page can select one or more companies by simply using the mouse to select the cells with the companies' names. In this case, the user has selected "Microsoft" and "Contoso" in the left web part - the JavaScript code detects the change of the active selection and copies these company names ("Microsoft" and "Contoso") to the right web part.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_2.png" width=572 height=225 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The user then clicks on the Market Cap "button" (cell A1) - again the JavaScript code detects the change in the active selection and accordingly switches the right web part to display the Market Cap chart.&lt;/P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_3.png" width=572 height=220 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_3.png"&gt;&lt;/A&gt; 
&lt;P&gt;Next, the user highlights all four companies - this change in the active selection is again detected and the selected companies are copied from the left web part to the right web part. This then results in the Market Cap chart being updated to show all four companies.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_4.png" width=572 height=220 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Finally, the user clicks on the Volume "button" (cell B1) - the JavaScript code thus causes the web part on the right to display the stock trade Volume chart, showing all four companies that had been selected.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_12.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_5.png" width=572 height=218 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/IntroducingtheJavaScriptObjectModelforEx_1231E/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Summary&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;The JSOM is a powerful new API that expands Excel Services capabilities and that enables Excel Services to be used for completely new solutions. The JSOM can be used by itself to provide a means for automating Excel Web Access, or to provide part-to-part communication between different EWA web parts. It can also be used with other APIs such as the new &lt;A href="http://blogs.msdn.com/visio/archive/2009/10/30/introducing-visio-services.aspx" mce_href="http://blogs.msdn.com/visio/archive/2009/10/30/introducing-visio-services.aspx"&gt;Visio Services&lt;/A&gt; JavaScript Object Model, &lt;A href="http://www.microsoft.com/maps/isdk/ajax/" mce_href="http://www.microsoft.com/maps/isdk/ajax/"&gt;Bing Maps SDK&lt;/A&gt; and many others to build custom solutions/mash-ups.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9930573" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Programmability/default.aspx">Programmability</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category><category domain="http://blogs.msdn.com/excel/archive/tags/JSOM/default.aspx">JSOM</category></item><item><title>Create conditional drop-down lists</title><link>http://blogs.msdn.com/excel/archive/2009/11/24/create-conditional-drop-down-lists.aspx</link><pubDate>Tue, 24 Nov 2009 19:46:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9928190</guid><dc:creator>FredK</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/excel/comments/9928190.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9928190</wfw:commentRss><description>&lt;p&gt;Today’s author is Reinout Dorreboom from the Netherlands, a Technical Consultant at Getronics, where he has worked with Office applications for many years, and where his Microsoft Certified Training skills enabled him to help other people get up to speed with Excel.&lt;/p&gt;  &lt;p&gt;In Excel 2007 (and earlier), it’s possible to create a drop-down list. By using the INDIRECT function, you can then create additional drop-down lists that are conditional to the first drop-down list.&lt;/p&gt;  &lt;p&gt;In this example we’ll create the following table:    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="64"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;&lt;b&gt;A&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="100"&gt;           &lt;p&gt;&lt;b&gt;B&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="92"&gt;           &lt;p&gt;&lt;b&gt;C&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="152"&gt;           &lt;p&gt;&lt;b&gt;D&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;&lt;b&gt;1&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom" width="100"&gt;           &lt;p&gt;&lt;b&gt;Country&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="92"&gt;           &lt;p&gt;&lt;b&gt;City&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="152"&gt;           &lt;p&gt;&lt;b&gt;Street&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;&lt;b&gt;2&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;David&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="100"&gt;           &lt;p&gt;Netherlands&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="92"&gt;           &lt;p&gt;Rotterdam&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="152"&gt;           &lt;p&gt;Abraham van Stolkweg&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;&lt;b&gt;3&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;Linda&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="100"&gt;           &lt;p&gt;Germany&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="92"&gt;           &lt;p&gt;Munich&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="152"&gt;           &lt;p&gt;MunichStreet1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="64"&gt;           &lt;p&gt;&lt;b&gt;4&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="64"&gt;           &lt;p&gt;Peter&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="100"&gt;           &lt;p&gt;Britain&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="92"&gt;           &lt;p&gt;London&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="152"&gt;           &lt;p&gt;Bacon Street (E1)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Columns &lt;b&gt;B&lt;/b&gt;, &lt;b&gt;C&lt;/b&gt;, and &lt;b&gt;D&lt;/b&gt; contain drop-down lists. If you select &lt;b&gt;Netherlands&lt;/b&gt; in the drop-down list in column &lt;b&gt;B&lt;/b&gt;, only Dutch cities will be displayed in the drop-down list in Column &lt;b&gt;C&lt;/b&gt;. If you select &lt;b&gt;Germany&lt;/b&gt;, only German cities will be displayed in the drop-down list in Column &lt;b&gt;C&lt;/b&gt;. Similarly, when you select a city in Column &lt;b&gt;C&lt;/b&gt;, only the street names of that city will be displayed in column &lt;b&gt;D&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;To create conditional lists, complete the following procedures.&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;Enter the data&lt;/b&gt;&lt;/h4&gt;  &lt;p&gt;First, we’ll create the table as shown below.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="65" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image002_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, we’ll create a few lists.&lt;/p&gt;  &lt;p&gt;First, we’ll create a list of countries. In this example, we create the following countries:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In Cell F1, type Netherlands. &lt;/li&gt;    &lt;li&gt;In Cell G1, type Britain. &lt;/li&gt;    &lt;li&gt;In Cell H1, type Germany. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;i&gt;As you can see I made a horizontal list instead of a vertical list. This isn’t really necessary, but it is easier to maintain to keep the cities under the right country.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Second, we’ll add three cities to pick from for each country.    &lt;br /&gt;    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="161"&gt;           &lt;p&gt;Cell F2: Amsterdam&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="162"&gt;           &lt;p&gt;Cell G2: London&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;Cell H2: Bonn&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="161"&gt;           &lt;p&gt;Cell F3: Rotterdam&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="162"&gt;           &lt;p&gt;Cell G3: Canterbury&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;Cell H3: Berlin&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="161"&gt;           &lt;p&gt;Cell F4: Eindhoven&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="162"&gt;           &lt;p&gt;Cell G4: Manchester&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="152"&gt;           &lt;p&gt;Cell H4: Munich&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Now, we’ll create a list of streets for each city. In the example, you can then choose from two streets per city.    &lt;br /&gt;    &lt;br /&gt;    &lt;table cellspacing="0" cellpadding="0" width="507" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F8: AmsterdamStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G8: LondonStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H8: BonnStreet1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F9: AmsterdamStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G9: LondonStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H9: BonnStreet2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F11: RotterdamStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G11: CanterburyStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H11: BerlinStreet1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F12: RotterdamStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G12: CanterburyStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H12: BerlinStreet2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F14: EindhovenStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G14: ManchesterStreet1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H14: MunichStreet1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="166"&gt;           &lt;p&gt;Cell F15: EindhovenStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="182"&gt;           &lt;p&gt;Cell G15: ManchesterStreet2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="157"&gt;           &lt;p&gt;Cell H15: MunichStreet2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;The worksheet should look like this now:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="143" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image004_thumb.jpg" width="322" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;Define the names&lt;/b&gt;&lt;/h4&gt;  &lt;p&gt;Ok, all content is provided. Now we can start creating a name for each range.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Select the cells F2:F4 and name the range: Netherlands &lt;/li&gt;    &lt;li&gt;Select the cells G2:G4 and name the range: Britain &lt;/li&gt;    &lt;li&gt;Select the cells H2:H4 and name the range: Germany      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select the cells F7:F8 and name the range: Amsterdam &lt;/li&gt;    &lt;li&gt;Select the cells F10:F11 and name the range: Rotterdam &lt;/li&gt;    &lt;li&gt;Select the cells F13:F14 and name the range: Eindhoven      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select the cells G7:G8 and name the range: London &lt;/li&gt;    &lt;li&gt;Select the cells G10:G11 and name the range: Canterbury &lt;/li&gt;    &lt;li&gt;Select the cells G13:G14 and name the range: Manchester      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Select the cells H7:H8 and name the range: Bonn &lt;/li&gt;    &lt;li&gt;Select the cells H10:H11 and name the range: Berlin &lt;/li&gt;    &lt;li&gt;Select the cells H13:H14 and name the range: Munich &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For information about how to define names, see &lt;a href="http://office.microsoft.com/en-us/excel/HA101471201033.aspx"&gt;Define and use names in formulas&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;Create the drop-down lists&lt;/b&gt;&lt;/h4&gt;  &lt;p&gt;After defining the names, we can create the drop-down lists.&lt;/p&gt;  &lt;p&gt;First, we’ll make a drop-down list for Country.&lt;/p&gt;  &lt;p&gt;1. Select cell B2.&lt;/p&gt;  &lt;p&gt;2. On the ribbon, click the &lt;b&gt;Data&lt;/b&gt; tab.&lt;/p&gt;  &lt;p&gt;3. In the &lt;b&gt;Data Tools&lt;/b&gt; group, click &lt;b&gt;Data Validation&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;4. Fill the values as follows:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; In the &lt;strong&gt;Allow&lt;/strong&gt; box, select &lt;strong&gt;List&lt;/strong&gt;.     &lt;br /&gt;&amp;#160;&amp;#160; In the &lt;strong&gt;Source&lt;/strong&gt; box, type &lt;span style="font-size: 11pt; font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;=$F$1:$H$1&lt;/span&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="230" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image006_thumb.jpg" width="290" border="0" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Note: Dollar signs ($) are used in the formula so that we can drag the cell downwards from David to Peter.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;5. Click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;6. Drag the cell content downwards.    &lt;br /&gt;&lt;i&gt;     &lt;br /&gt;&lt;/i&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image008_2.jpg"&gt;&lt;img title="clip_image008" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="109" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image008_thumb.jpg" width="180" border="0" /&gt;&lt;/a&gt;&lt;i&gt;      &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Now, we’ll make the first conditional drop-down list.&lt;/p&gt;  &lt;p&gt;1. Select Cell C1.&lt;/p&gt;  &lt;p&gt;2. On the ribbon, click the &lt;b&gt;Data&lt;/b&gt; tab.&lt;/p&gt;  &lt;p&gt;3. In the &lt;b&gt;Data Tools&lt;/b&gt; group, click &lt;b&gt;Data Validation&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;4. Fill the values as follows:&lt;/p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; In the &lt;strong&gt;Allow&lt;/strong&gt; box, select &lt;strong&gt;List&lt;/strong&gt;.   &lt;br /&gt;&amp;#160;&amp;#160; In the &lt;strong&gt;Source&lt;/strong&gt; box, type &lt;span style="font-size: 11pt; font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;=INDIRECT($B2)    &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image010_2.jpg"&gt;&lt;img title="clip_image010" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="224" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image010_thumb.jpg" width="282" border="0" /&gt;&lt;/a&gt;   &lt;br /&gt;  &lt;br /&gt;&lt;i&gt;Note: In the formula, a Dollar sign ($) is not placed before the row. That is because we want to drag the cell formula downwards.&lt;/i&gt;   &lt;p&gt;5. Click &lt;b&gt;OK&lt;/b&gt;.     &lt;br /&gt;&lt;i&gt;     &lt;br /&gt;Note: If you click &lt;b&gt;OK&lt;/b&gt;, you may get an error message indication that the evaluation of the formula was an error. This is correct, because the cell where this list depends on (B2) is empty.       &lt;br /&gt;      &lt;br /&gt;&lt;/i&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image012_3.jpg"&gt;&lt;img title="clip_image012" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="78" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image012_thumb.jpg" width="276" border="0" /&gt;&lt;/a&gt;&lt;i&gt;      &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;6. Drag the cell content downwards.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image014_2.jpg"&gt;&lt;img title="clip_image014" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="98" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image014_thumb.jpg" width="275" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, we’ll make our second conditional drop-down list.&lt;/p&gt;  &lt;p&gt;1. Select cell D2.&lt;/p&gt;  &lt;p&gt;2. On the ribbon, click the &lt;b&gt;Data&lt;/b&gt; tab.&lt;/p&gt;  &lt;p&gt;3. In the &lt;b&gt;Data Tools&lt;/b&gt; group, click &lt;b&gt;Data Validation&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;4. Fill the values as follows:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; In the &lt;strong&gt;Allow&lt;/strong&gt; box, select &lt;strong&gt;List&lt;/strong&gt;.   &lt;br /&gt;&amp;#160;&amp;#160; In the &lt;strong&gt;Source&lt;/strong&gt; box, type &lt;span style="font-size: 11pt; font-family: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-ansi-language: en-us; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: &amp;#39;Times New Roman&amp;#39;; mso-bidi-theme-font: minor-bidi; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;=INDIRECT($C2)    &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image016_2.jpg"&gt;&lt;img title="clip_image016" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="236" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image016_thumb.jpg" width="297" border="0" /&gt;&lt;/a&gt;   &lt;br /&gt;  &lt;br /&gt;&lt;i&gt;Note: In the formula, a Dollar sign ($) is not placed before the row. That is because we want to drag the cell formula downwards.&lt;/i&gt;   &lt;p&gt;5. Click &lt;b&gt;OK&lt;/b&gt;.     &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Note: If you click &lt;b&gt;OK&lt;/b&gt;, you may get an error message indicating that the evaluation of the formula was an error. This is correct, because the cell on which this list depends (C2) is empty.       &lt;br /&gt;      &lt;br /&gt;&lt;/i&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image012%5B1%5D.jpg"&gt;&lt;img title="clip_image012[1]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="80" alt="clip_image012[1]" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image012%5B1%5D_thumb.jpg" width="283" border="0" /&gt;&lt;/a&gt;&lt;i&gt;      &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;6. Drag the cell content downwards.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image018_2.jpg"&gt;&lt;img title="clip_image018" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="83" alt="clip_image018" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/Createconditionaldropdownlists_9344/clip_image018_thumb.jpg" width="280" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Done&lt;/b&gt;&lt;b&gt;!&lt;/b&gt;     &lt;br /&gt;If you choose a country, the City field displays only cities for that country. And only streets for the selected city will be shown.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9928190" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Power+Tips/default.aspx">Power Tips</category></item><item><title>Uncovering Publish to Excel Services in Excel 2010</title><link>http://blogs.msdn.com/excel/archive/2009/11/23/uncovering-publish-to-excel-services-in-excel-2010.aspx</link><pubDate>Tue, 24 Nov 2009 05:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9927728</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/excel/comments/9927728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9927728</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to Amy Lin for putting together this post.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In Excel 2007, we introduced the ability to publish workbooks to SharePoint. This feature enabled users to upload Excel workbooks (or specific workbook items) on to their SharePoint sites for people to view and interact with using Excel Services.&lt;/P&gt;
&lt;P&gt;In Excel 2010, this feature has all the same functionality but the entry point has changed. For the Technical Preview/Beta users, the entry point will look different since these changes will be reflected in the final release of Excel. I will walk through the workflow of how to publish workbook items to the server with the new user experience. If you want a refresher of how to publish workbooks in Excel 2007, see our previous blog entry on: &lt;A href="http://blogs.msdn.com/excel/archive/2005/11/11/491970.aspx" mce_href="http://blogs.msdn.com/excel/archive/2005/11/11/491970.aspx"&gt;How do I publish workbooks to the server?&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;In Office 2010, the Office menu has been replaced by Backstage. To learn more about the Backstage View, read these blog entries:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/office2010/archive/2009/07/15/microsoft-office-backstage-part-1-backstory.aspx" mce_href="http://blogs.technet.com/office2010/archive/2009/07/15/microsoft-office-backstage-part-1-backstory.aspx"&gt;Microsoft Office Backstage (Part 1 – Backstory)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/office2010/archive/2009/07/29/save-some-time-save-some-trees.aspx" mce_href="http://blogs.technet.com/office2010/archive/2009/07/29/save-some-time-save-some-trees.aspx"&gt;Save Some Time – Save Some Trees&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/office2010/archive/2009/08/11/microsoft-office-backstage-part-3-the-info-tab.aspx" mce_href="http://blogs.technet.com/office2010/archive/2009/08/11/microsoft-office-backstage-part-3-the-info-tab.aspx"&gt;Microsoft Office Backstage (Part 3 – The Info tab)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/office2010/archive/2009/08/17/evolving-the-backstage-view.aspx" mce_href="http://blogs.technet.com/office2010/archive/2009/08/17/evolving-the-backstage-view.aspx"&gt;Evolving the Backstage View&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In Backstage, the publish entry point is accessed from clicking the “Save &amp;amp; Send” tab on the left and then clicking the “Save to SharePoint” billboard in the middle. &lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=570&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb.png" width=570 height=437 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb.png"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;
&lt;P align=center&gt;&lt;I&gt;Excel 2010 publish entry points&lt;/I&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;In “Save to SharePoint”, you will find the “Publish Options” button, a list of locations and the “Save As” button. The “Publish Options” button allows you to pick specific items you want to publish. The list of locations helps you save to common locations or you can click the “Save As” at the bottom of the list. &lt;/P&gt;
&lt;H4&gt;Publish Entry Points&lt;/H4&gt;
&lt;P&gt;The “Publish Options” button from Backstage and in the "Save As” dialog launches the dialog below:&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=570&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_5.png" width=558 height=362 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_5.png"&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;
&lt;P align=center&gt;&lt;I&gt;Excel 2010 Publish Options dialog&lt;/I&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;For all the Excel 2007 users, this dialog will seem very familiar because it is the same dialog used to specify which workbook items to publish to the server. For example, if you want to publish a specific chart and a PivotTable, select “Items in the Workbook” from the drop down and check the Chart and PivotTable you desire.&amp;nbsp; In the image below, we’ve selected “Chart 3” and “PivotTable1”. &lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_8.png" width=506 height=184 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_8.png"&gt; &lt;/P&gt;
&lt;P&gt;Once you are done making your selections, click “OK”. If you clicked on “Publish Options” from Backstage, you will return back to that view. Once in Backstage, if you see a recent location you want to save to, double-click on it in the list or click “Save As” at the bottom of the locations. &lt;/P&gt;
&lt;P&gt;The “Save As” button launches the following dialog where the default location is the location selected in the gallery. However, you can change the location of the file once you are in this dialog. The “Publish Options” button is exposed here so you can also select which workbook items to publish from this entry point. &lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=570&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_10.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb_3.png" width=570 height=437 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;
&lt;P align=center&gt;&lt;I&gt;Excel 2007 Save to SharePoint Save As Dialog&lt;/I&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;After clicking “Save”, your chart &amp;amp; Pivot Table can now be viewed in a &lt;B&gt;browser&lt;/B&gt;! &lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=570&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb_5.png" width=570 height=437 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/UncoveringPublishtoExcelServicesinExcel2_12F39/image_thumb_5.png"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=570&gt;
&lt;P align=center&gt;&lt;I&gt;Excel in the browser&lt;/I&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H4&gt;Summary&lt;/H4&gt;
&lt;P&gt;The publish feature behaves the same as it did in 2007.&amp;nbsp; The new Backstage in Office 2010 gave us an opportunity to move the entry point to a more natural location.&amp;nbsp; I look forward to any feedback you have on the publishing experience. Happy publishing!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927728" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category></item><item><title>Excel Services in SharePoint 2010 Feature Support</title><link>http://blogs.msdn.com/excel/archive/2009/11/19/excel-services-in-sharepoint-2010-feature-support.aspx</link><pubDate>Thu, 19 Nov 2009 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9925059</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/excel/comments/9925059.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9925059</wfw:commentRss><description>&lt;P&gt;Excel Services does a good job of rendering Excel spreadsheets with a high degree of fidelity.&amp;nbsp; In other words, what you see in Excel is what you will see in Excel Services.&amp;nbsp; Excel, however, is incredibly feature rich, comprising features added over decades of development.&amp;nbsp; By comparison, Excel Services is a young product, so naturally Excel Services doesn’t yet support all the things you might create in Excel.&amp;nbsp; So what &lt;I&gt;does&lt;/I&gt; Excel Services in SharePoint 2010 support?&amp;nbsp; And how does Excel Services deal with files that contain features it doesn’t support?&amp;nbsp; That is the topic of today’s blog post.&lt;/P&gt;
&lt;P&gt;I am going to assume readers are aware of our feature support in Excel Services 2007.&amp;nbsp; If you need a refresher, read our &lt;A href="http://blogs.msdn.com/excel/archive/2005/12/01/499206.aspx" mce_href="http://blogs.msdn.com/excel/archive/2005/12/01/499206.aspx"&gt;original blog topic on the matter&lt;/A&gt;.&amp;nbsp; The following sections build on top of this topic.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Support For New Excel 2010 Features&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Hopefully by now you’ve heard about some of the great features in Excel 2010 (If not, read through our posts &lt;A href="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx" mce_href="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx"&gt;here&lt;/A&gt;).&amp;nbsp; By and large, most of the new features you’ll hear talked about for Excel 2010 will work in some way in Excel Services.&amp;nbsp; Some features will display as they do in Excel.&amp;nbsp; Others are also interactive.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/07/17/sparklines-in-excel.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/07/17/sparklines-in-excel.aspx"&gt;Sparklines&lt;/A&gt; can be viewed&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/08/05/icon-set-improvements-in-excel-2010.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/08/05/icon-set-improvements-in-excel-2010.aspx"&gt;Icon Set&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/excel/archive/2009/08/07/data-bar-improvements-in-excel-2010.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/08/07/data-bar-improvements-in-excel-2010.aspx"&gt;Data Bar&lt;/A&gt; improvements can be viewed&lt;/LI&gt;
&lt;LI&gt;The &lt;A href="http://blogs.msdn.com/excel/archive/2009/09/10/function-improvements-in-excel-2010.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/09/10/function-improvements-in-excel-2010.aspx"&gt;new functions&lt;/A&gt; are supported&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/09/23/easy-and-even-fun-data-exploration-introducing-excel-2010-slicers.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/09/23/easy-and-even-fun-data-exploration-introducing-excel-2010-slicers.aspx"&gt;Slicers&lt;/A&gt; can be viewed and interacted with&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/10/05/pivottable-named-sets-in-excel-2010.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/10/05/pivottable-named-sets-in-excel-2010.aspx"&gt;PivotTable Named Sets&lt;/A&gt; can be viewed&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/10/15/a-few-more-pivottable-improvements-in-excel-2010.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/10/15/a-few-more-pivottable-improvements-in-excel-2010.aspx"&gt;Other PivotTable improvements&lt;/A&gt; can be viewed&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2009/10/22/introducing-powerpivot.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/10/22/introducing-powerpivot.aspx"&gt;PowerPivot&lt;/A&gt; files can be viewed and interacted with&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In addition to this, I am happy to announce that embedded images, a long time feature of Excel, are now supported and can be viewed in Excel Services.&amp;nbsp; Here’s an example of a report with an embedded image:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_3.png" width=415 height=274 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_3.png"&gt; &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Improved Handling of Unsupported Features&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;In Excel Services 2007, if a file contained an unsupported feature, Excel Services would not be able to open the file at all.&amp;nbsp; This was a frustrating point for customers, as the unsupported feature was often something that the customer didn’t care about in the context of rendering in Excel Services.&amp;nbsp; For example, a workbook may have a cell comment, which is unsupported, on Sheet3, but the workbook, when rendered via Excel Services, was only meant to show the chart on Sheet1.&amp;nbsp; In this scenario, the only recourse for the customer was to remove the unsupported feature.&lt;/P&gt;
&lt;P&gt;In the SharePoint 2010 release of Excel Services, a lot of work went into bringing support for new features as well the other investment areas that were discussed in the &lt;A href="http://blogs.msdn.com/excel/archive/2009/11/03/excel-services-2010-overview.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/11/03/excel-services-2010-overview.aspx"&gt;Excel Services overview post&lt;/A&gt;.&amp;nbsp; With every release we narrow the functionality gap between Excel and Excel Services and reduce the number of unsupported features, but even in this new release, unsupported features still exist.&amp;nbsp; To help users work with this limitation, Excel Services will simply “ignore” certain unsupported features.&amp;nbsp; In other words, rather than blocking the entire file from loading, Excel Services will load the file just fine, you just won’t see the features that Excel Services doesn’t support.&lt;/P&gt;
&lt;P&gt;So which features fall into this bucket?&amp;nbsp; Here are the features that will not prevent Excel Services from loading a file:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cell comments&lt;/LI&gt;
&lt;LI&gt;Formula references to external books&lt;/LI&gt;
&lt;LI&gt;Query Tables (also known as external data ranges)&lt;/LI&gt;
&lt;LI&gt;VBA&lt;/LI&gt;
&lt;LI&gt;Anything using OfficeArt technology, such as Shapes, WordArt, SmartArt, Org Chart, Diagrams, Signature Lines, Ink Annotations, etc.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A couple notes about the above list.&amp;nbsp; These features continue to be unsupported, so that means they don’t render, execute, or work in any way like they do on the client.&amp;nbsp; Most of the features in the above list will not render at all in Excel Services.&amp;nbsp; For example, if there’s a shape near cell A1 when viewed in the client, you will see no shape at all when viewed on the server.&amp;nbsp; Other features, like formula references and query tables, show you values that were last refreshed in the client.&amp;nbsp; In other words, the values in the cells are still there, but you cannot update them in any way.&amp;nbsp; Lastly, VBA code will not execute on the server.&lt;/P&gt;
&lt;P&gt;One additional note about VBA.&amp;nbsp; Excel Services 2007 didn’t support loading *.xlsm files &lt;EM&gt;at all&lt;/EM&gt; because such files are meant to contain macros and files with macros would not load.&amp;nbsp; Now that the SharePoint 2010 version of Excel Services knows how to ignore VBA macros, I am happy to say that also means *.xlsm files can now be loaded in Excel Services.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Viewing a File with Ignored Unsupported Features&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;You may be wondering, if Excel Services will load files and not render certain unsupported features, how do I know if the file I’m viewing is missing features?&amp;nbsp; Excel Services will display a notification above the sheet that the file has missing features.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_5.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_5.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_1.png" width=508 height=130 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This is your first clue that the file is rendering different than Excel.&amp;nbsp; If you’d like to learn more about which unsupported features Excel Services found in the file, click the “Details…” button.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_7.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_2.png" width=330 height=296 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;What About Other Unsupported Features?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;All other unsupported features will continue to behave as they do in Excel Services 2007.&amp;nbsp; That is, Excel Services will block loading of the file if it detects the existence of one of these features. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_9.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_9.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_3.png" width=333 height=273 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010FeatureSupp_112C6/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This &lt;A href="http://office.microsoft.com/en-us/excel/HA100217161033.aspx?pid=CH101024611033" mce_href="http://office.microsoft.com/en-us/excel/HA100217161033.aspx?pid=CH101024611033"&gt;help topic&lt;/A&gt; for the 2007 release covers the detailed list (just ignore any mention of images, as I already mentioned those are now supported).&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Summary&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;I hope that the changes we’ve made to how we handle unsupported features will alleviate many of the pain points our customers experience when rendering spreadsheet files with Excel Services.&amp;nbsp; I would love to hear your feedback about the work we’ve done, as well as any thoughts you have on which unsupported features you’d like to see supported in a future release.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925059" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category></item><item><title>Deploying Office Web Apps in the Enterprise</title><link>http://blogs.msdn.com/excel/archive/2009/11/18/deploying-office-web-apps-in-the-enterprise.aspx</link><pubDate>Wed, 18 Nov 2009 18:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924576</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/excel/comments/9924576.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9924576</wfw:commentRss><description>Following on the heels of the Office 2010 beta availability announcement, the &lt;A href="http://blogs.msdn.com/officewebapps/default.aspx" mce_href="http://blogs.msdn.com/officewebapps/default.aspx"&gt;Office Web Apps blog&lt;/A&gt; has a new post discussing &lt;A href="http://blogs.msdn.com/officewebapps/default.aspx" mce_href="http://blogs.msdn.com/officewebapps/default.aspx"&gt;deploying office web apps in the enterprise&lt;/A&gt;.&amp;nbsp; Have a read if you're looking to test drive the beta version of Office Web Apps.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924576" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category></item><item><title>Announcing Office 2010 and PowerPivot Beta Availability</title><link>http://blogs.msdn.com/excel/archive/2009/11/18/announcing-office-2010-and-powerpivot-beta-availability.aspx</link><pubDate>Wed, 18 Nov 2009 17:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9924464</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/excel/comments/9924464.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9924464</wfw:commentRss><description>&lt;P&gt;From the &lt;A href="http://blogs.technet.com/office2010/default.aspx" mce_href="http://blogs.technet.com/office2010/default.aspx"&gt;Office 2010 Engineering blog&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Today is an exciting day! At PDC we announced the availability of the public betas of Microsoft Office 2010, SharePoint Server 2010, Visio 2010, Project 2010 and Office Web Apps for business customers. If you’d like to be one of the millions of people who try, test and give feedback on the latest and greatest, you can download the betas at &lt;A href="http://www.microsoft.com/2010" s_oid="http://www.microsoft.com/2010" s_oidt="0"&gt;www.microsoft.com/2010&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;We also announced that Microsoft Office Mobile 2010 beta is available now too, and you can download it through the &lt;A href="http://www.microsoft.com/windowsmobile/catalog/cataloghome.aspx"&gt;Windows Mobile Marketplace&lt;/A&gt; for Windows Mobile 6.5 phones.&lt;/P&gt;
&lt;P&gt;The final release of Office 2010 will debut next year, but we’re excited to allow everyone to start using the new features and tools that will help you collaborate, connect and work better together with others across the PC, mobile phone and browser. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Read more about &lt;A href="http://blogs.technet.com/office2010/archive/2009/11/16/announcing-office-2010-beta-availability.aspx" mce_href="http://blogs.technet.com/office2010/archive/2009/11/16/announcing-office-2010-beta-availability.aspx"&gt;what the Office 2010 Engineering blog has to say about the beta release&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Also, we've talked a lot about PowerPivot (previously known as Gemini)&amp;nbsp;on this blog, and I'm excited to let you know&amp;nbsp;that we've announced the beta availability of PowerPivot today as well.&amp;nbsp; Check out the details about PowerPivot&amp;nbsp;&lt;A href="http://powerpivot.com/" mce_href="http://powerpivot.com/"&gt;here&lt;/A&gt;.&amp;nbsp; Download link is &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=48a5b47b-8c9c-450f-ab6e-178600a733ca&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=48a5b47b-8c9c-450f-ab6e-178600a733ca&amp;amp;displaylang=en"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I look forward to hearing your feedback on both Excel 2010 and PowerPivot!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924464" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/News+_2F00_+Announcments/default.aspx">News / Announcments</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category><category domain="http://blogs.msdn.com/excel/archive/tags/Gemini/default.aspx">Gemini</category></item><item><title>Easily manage defined names in Microsoft Excel</title><link>http://blogs.msdn.com/excel/archive/2009/11/17/easily-manage-defined-names-in-microsoft-excel.aspx</link><pubDate>Tue, 17 Nov 2009 23:35:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923946</guid><dc:creator>FredK</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/excel/comments/9923946.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9923946</wfw:commentRss><description>&lt;p&gt;Today’s author is Jan Karel Pieterse, an Excel MVP. You can find more useful tips from Jan Karel on his website: &lt;a href="http://www.jkp-ads.com/"&gt;http://www.jkp-ads.com/&lt;/a&gt;. This post informs you about Name Manager, a free utility that helps you manage defined names in your workbooks.&lt;/p&gt;  &lt;p&gt;&lt;span class="cdOMPDescription" id="lblDescription"&gt;If you need a free utility to manage defined names in your workbooks, this one is a must-have. List all names in your active workbook. Filter them using 13 filters including &amp;quot;With external references,&amp;quot; &amp;quot;With errors,&amp;quot; &amp;quot;Hidden,&amp;quot; and &amp;quot;Visible.&amp;quot; Show only names that contain a substring. Show only names unused in worksheet cells. Edit them in a simple dialog box or edit them in a list and update all names at once. Supports the 2007 Office system.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;To download Name Manager, visit &lt;a href="http://www.jkp-ads.com/officemarketplacenm-en.asp"&gt;www.jkp-ads.com/officemarketplacenm-en.asp&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For information about how to define names, see &lt;a href="http://office.microsoft.com/en-us/excel/HA101471201033.aspx?pid=CH100648431033"&gt;Define and use names in formulas&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923946" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Power+Tips/default.aspx">Power Tips</category></item><item><title>Excel Services in SharePoint 2010 Administration Improvements</title><link>http://blogs.msdn.com/excel/archive/2009/11/16/excel-services-in-sharepoint-2010-administration-improvements.aspx</link><pubDate>Tue, 17 Nov 2009 05:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923383</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/excel/comments/9923383.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9923383</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to John Campbell for putting together this post.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Ongoing management is key to any successful server product’s deployment. It can be challenging to figure out the right initial combination of settings, and to know how to further change those settings when problems arise. With that in mind, I have put this blog article together to go into what’s new in the Excel Services administration space.&lt;/P&gt;
&lt;H4&gt;First Things First: SharePoint Administration and Service Applications&lt;/H4&gt;
&lt;P&gt;Excel Services is a “Service Application” in SharePoint. Service Applications are the replacement for what used to be known as a Shared Service Provider (or SSP). &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_thumb_3.png" width=570 height=292 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A service application is basically a global entity in the farm that performs some useful piece of functionality. In our case, Excel Services provides all the ‘Excel’ goodness in the browser that you see in SharePoint. The big things worth knowing about service applications are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;You can delegate administration of them – so the central administrator can find the Excel Service administrator and give that person rights to administer that service and nothing else.&lt;/LI&gt;
&lt;LI&gt;Although in general you can have multiple service applications in a farm, Excel Services is really geared with the idea of a single service application per farm in mind. The reason for this is because only the default Excel Service application will respond to requests.&lt;/LI&gt;
&lt;LI&gt;You can configure which physical machines in the farm run certain service applications and which don’t. So you can dedicate certain machines to be used only by certain service applications. This can be helpful when planning your deployments.&lt;/LI&gt;
&lt;LI&gt;Unlike the old flavor of ‘Shared Services’ in 2007, you can choose which service applications to run independently, and you aren’t forced to provision and manage a separate database for them all.&lt;/LI&gt;
&lt;LI&gt;They all support PowerShell! And now that the topic of PowerShell has come up, let’s talk about PowerShell…&lt;/LI&gt;&lt;/OL&gt;
&lt;H4&gt;PowerShell Support&lt;/H4&gt;
&lt;P&gt;Excel Services fully supports PowerShell in the 2010 release. PowerShell is the product that provides a simple command line style scripting interface, but it can be used to go much farther than that since it supports .Net and can be used for more advanced things like calling OM directly. PowerShell scripts are also reusable – i.e. you write it once, and can run it anytime in the future. So scripting setup, or performing some regular maintenance task, etc and reusing it when the need arises is a snap.&lt;/P&gt;
&lt;P&gt;Commands you perform in PowerShell are done using “command-lets” or cmdlets for short. All the Excel Services PowerShell cmdlets are fairly simple in nature and are all flavors of Get, Set, New, and Remove. They basically all boil down to the action of getting some object (like an Excel Service application object, or a Trusted Location object from the trusted locations list) and modifying settings on it. To read the settings you use Get-&lt;I&gt;object&lt;/I&gt;, to change settings you use Set-&lt;I&gt;object&lt;/I&gt;. If the object is one of many in a list (like trusted locations or trusted UDFs), you use New-&lt;I&gt;object&lt;/I&gt; to make a new entry in the list, or Remove-&lt;I&gt;object&lt;/I&gt; to get rid of one. Let’s take a look at a couple of quick examples to illustrate what I mean.&lt;/P&gt;
&lt;P&gt;At the highest level, there are general, global, settings for Excel Services. What if you want to see what all the setting values are? In the 2007 release this actually wasn’t possible using stsadm. With PowerShell you can use:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Get-SPExcelServiceApplication&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;That will show you the ‘basic’ settings for the service application (name, type, and Id). If you want to see all the settings and their values, then you send the object (via piping) to a different cmdlet to format it as a list:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Get-SPExcelServiceApplication | Format-list *&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Since I’m not specifying a name of a specific application, it will get every Excel Service running in the farm, and for each one display all its settings.&lt;/P&gt;
&lt;P&gt;Now suppose I want to change how many sessions a user is allowed to have on a single back end server machine running Excel Services. Here is the PowerShell to do that:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Set-SPExcelServiceApplication MyExcelService –SessionsPerUserMax 50&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;I call the Set cmdlet on the global Excel Services service application cmdlet (SPExcelServiceApplication), I specify which Excel Service application I am talking about in case there is more than one (in this case I want the one named MyExcelService), and then I instruct it to set the SessionsPerUserMax property to the value of 50.&lt;/P&gt;
&lt;P&gt;Let’s look at a more advanced example.&lt;/P&gt;
&lt;P&gt;A common request from the 2007 release was to look at all the trusted locations, and when some particular value was less than some amount, set that value to something new. (See the next section for an overview of trusted locations.) This wasn’t possible in 2007, but is pretty simple in 2010.&lt;/P&gt;
&lt;P&gt;The following example will look at every trusted location for every Excel Service application running in the farm, and if external data refresh is allowed using embedded connections or connections from a data connection library (DCL), it makes it more secure via only allowing connections that are stored in a DCL.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Get-SPExcelServiceApplication | Get-SPExcelFileLocation | where { $_.ExternalDataAllowed –eq “DclAndEmbedded”} | Set-SPExcelFileLocation –ExternalDataAllowed Dcl&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Notice the use of the “|” or the pipe operator. It just takes whatever the output from one cmdlet is, and sends it as the input to the next cmdlet. This is what makes it so easy to write a cmdlet that ‘loops’ over all the Excel Services in the farm, and for each one get all the trusted locations. The “where” clause just filters down the set of trusted locations to only the ones that match the logical criteria we are looking for, and then sends those results on to the next Set cmdlet to change the actual settings of that trusted location.&lt;/P&gt;
&lt;P&gt;If you are interested in going a little deeper on PowerShell for SharePoint in general, check out the &lt;A href="http://blogs.msdn.com/sharepoint/archive/2009/02/11/sharepoint-and-powershell-knowledge.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2009/02/11/sharepoint-and-powershell-knowledge.aspx"&gt;SharePoint team blog&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Default Settings for Trusted Locations&lt;/H4&gt;
&lt;P&gt;Excel Services has global settings, and also has trusted location level settings. Trusted locations are essentially just file paths (to a site, document library, portal, UNC share, etc) to places where the administrator has explicitly allowed workbook files to be loaded from. Excel Services will ONLY load workbooks that are stored in trusted locations. Excel Services can have many trusted locations, and each trusted location has a bunch of settings that dictate how the workbook can be used when it is loaded on the server. Simple example: by creating two trusted locations with different settings, you could specify that workbooks loaded from an externally facing site can only be up to 1MB in size, but workbooks from an internal site may be up to 15MB.&lt;/P&gt;
&lt;P&gt;In Excel Services 2007 the administrator was forced to define at least one trusted location because by default in 2007, there were no trusted locations. And trusting something like, “all workbooks from anywhere in the SharePoint farm,” was non obvious.&lt;/P&gt;
&lt;P&gt;By default in 2010 we load workbooks from anywhere in the farm, and we even allow data refresh (with warnings shown) by default. So no more trying to figure out what the settings should be, what level you should define them at, etc – it all works out of the box. Most administrators won’t need to make any changes here, but for those that do, they still have all the power and flexibility they had in 2007.&lt;/P&gt;
&lt;P&gt;Tip – if you are trying to find an easy way to trust the entire farm in the 2007 release, you can add a trusted location as follows to achieve this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Address: http://&lt;/LI&gt;
&lt;LI&gt;Make sure the trust children checkbox is selected&lt;/LI&gt;
&lt;LI&gt;Make sure the type is SharePoint&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_6.png" width=572 height=194 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_6.png"&gt; &lt;/P&gt;
&lt;H4&gt;External Data – Better Error Messaging&lt;/H4&gt;
&lt;P&gt;Anyone that configured external data connectivity in 2007 probably has memories of struggling to figure out where and why things weren’t working. A lot can go into getting a back end application server running Excel Services connected to a data source. For a better treatment of the subject in 2007, including background, security issues, and step by step instructions with screen shots, see &lt;A href="http://technet.microsoft.com/en-us/library/cc262899.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc262899.aspx"&gt;this whitepaper I wrote&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The thing worth calling out in this blog article is that the error messages in this space have gotten much better. Excel Services now has error messaging with specific information about what/where the external data failure is being caused. In most of the common cases, these errors should help you quickly pinpoint what needs to be updated to get connectivity working. &lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_9.png" width=349 height=256 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010Administrat_12C85/image_9.png"&gt; &lt;/P&gt;
&lt;P&gt;For the security minded administrators, you can explicitly turn these more detailed error messages off and just show something generic instead. There is a setting to enable granular external data error messages on each trusted location.&lt;/P&gt;
&lt;P&gt;We hope you find the changes we have made in the administration space useful for Excel Services. We think we have made some of the common administration tasks easier – initial settings config, scripting, and troubleshooting external data. As always, we would love to hear your feedback about how we can continue to improve. This post only scratched the surface and was by no means a comprehensive guide to all things administration in Excel Services or in SharePoint. To learn more about SharePoint in general, see the &lt;A href="http://blogs.msdn.com/sharepoint/" mce_href="http://blogs.msdn.com/sharepoint/"&gt;SharePoint team blog&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923383" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category></item><item><title>Find Combinations</title><link>http://blogs.msdn.com/excel/archive/2009/11/12/find-combinations.aspx</link><pubDate>Thu, 12 Nov 2009 22:11:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9921596</guid><dc:creator>FredK</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/excel/comments/9921596.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9921596</wfw:commentRss><description>&lt;p&gt;Today’s author is Bill Seddon from Lyquidity Solutions, who informs us about a free tool for Excel users that allows you to find combinations of numbers that total to a selected value. For more information and a video, see &lt;a href="http://www.lyquidity.com/findcombinations"&gt;&lt;b&gt;http://www.lyquidity.com/findcombinations&lt;/b&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;font face="Calibri" size="3"&gt;Imagine you are an auditor or cash accountant and need to reconcile cash balances to their invoices.&amp;#160; Which combination of values makes up each cash value?&amp;#160; Not surprisingly, the Find Combinations add-in has been popular with the audit firms.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/FindCombinations_C663/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="82" alt="image" src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/FindCombinations_C663/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921596" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Power+Tips/default.aspx">Power Tips</category></item><item><title>Excel Services in SharePoint 2010 Dashboard Improvements</title><link>http://blogs.msdn.com/excel/archive/2009/11/11/excel-services-in-sharepoint-2010-dashboard-improvements.aspx</link><pubDate>Thu, 12 Nov 2009 03:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9921150</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/excel/comments/9921150.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9921150</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to Dan Parish for putting together this post.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;One of the great things about Excel Services is the Excel Web Access (EWA) web part. This web part allows you to render entire workbooks, or just portions of a workbook (for example a chart or a Table) in a SharePoint dashboard page. For a high level overview of what you can do with the EWA in SharePoint 2007, take a look at some of our existing blog entries:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2005/11/09/490926.aspx" mce_href="http://blogs.msdn.com/excel/archive/2005/11/09/490926.aspx"&gt;Excel Services – Key Scenarios&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2005/11/16/493509.aspx" mce_href="http://blogs.msdn.com/excel/archive/2005/11/16/493509.aspx"&gt;Excel services Part 5: All About “Interactivity”&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2005/11/30/498747.aspx" mce_href="http://blogs.msdn.com/excel/archive/2005/11/30/498747.aspx"&gt;Excel Services Part 11: Excel Server, SharePoint, and Dashboards &lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/excel/archive/2006/09/25/770961.aspx" mce_href="http://blogs.msdn.com/excel/archive/2006/09/25/770961.aspx"&gt;Using Parameters In Dashboards&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We have made many improvements to the EWA in SharePoint 2010, and they can be lumped into three major buckets:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Support for more existing, as well as new Excel 2010 Features&lt;/LI&gt;
&lt;LI&gt;Making the user experience even more familiar to users of Excel&lt;/LI&gt;
&lt;LI&gt;Support for additional part-to-part scenarios&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;#1 is very broad and so has been and will continue to be covered by other blog entries. This entry will specifically deal with improvements to the dashboarding experience: numbers 2 and 3.&lt;/P&gt;
&lt;H4&gt;Making the user experience even more familiar to users of Excel&lt;/H4&gt;
&lt;P&gt;In SharePoint 2007, the EWA’s rendering of workbooks was virtually identical to that of the Excel client’s. However, actually using the EWA wasn’t always the same. While all the interactive functionality (sorting, filtering, drilling up/down in a PivotTable) worked the same as Excel, some fundamental things like scrolling and periodic data refresh worked quite differently. In SharePoint 2010, we’ve addressed all of these issues by making the EWA AJAX based, which allows for more user interaction to happen within the browser itself, thereby allowing for a more fluid, Excel-like experience. Specifically, the following areas have been revamped:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Scrolling&lt;/LI&gt;
&lt;LI&gt;External data periodic refresh&lt;/LI&gt;
&lt;LI&gt;New for 2010, the ability to type into the grid (when the Office Web Apps are installed)&lt;/LI&gt;
&lt;LI&gt;Miscellaneous other improvements&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Scrolling&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In SharePoint 2007, the EWA rendered the grid in ‘pages’, which were by default 20 columns by 75 rows. If you had more data than that you had two options:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;You could increase the number of rows and columns per ‘page’ using the web part properties&lt;/LI&gt;
&lt;LI&gt;Your users could use the ‘paging buttons’ located at the top right of the EWA&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_3.png" width=373 height=158 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_3.png"&gt; &lt;/P&gt;
&lt;P&gt;In SharePoint 2010, we got rid of this model and made our scrolling work just like you’d expect: like Excel’s. The paging buttons are no more, and since the grid isn’t rendered in ‘pages’ anymore, the associated web part properties have also been removed.&lt;/P&gt;
&lt;P&gt;In the EWA in SharePoint 2010, you can scroll around your entire used range (and beyond) quickly and easily, whether your range is ten rows or a million. Additionally, due to how scrolling has been implemented, the size of the range of data you want to display in the EWA has no impact on the amount of time the page takes to load. The EWA always just renders what it is you are actually looking at in order to keep loading and rendering times to a minimum.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Periodic external data refresh&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The EWA in SharePoint 2007 supported periodic external data refresh, however it didn’t work the same as it does in Excel. Because in the EWA in SharePoint 2007 every action (including refreshing external data) caused a postback within the EWA, when external data was refreshing users were unable to continue to view their data or continue their work. This meant that web part page authors had two choices: they could set the EWA to refresh automatically, interrupting users every time it did so, or they could have the EWA prompt the user via a special notification bar for when they wanted to refresh like so:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_6.png" width=570 height=90 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_6.png"&gt; &lt;/P&gt;
&lt;P&gt;In SharePoint 2010, because of the new AJAX grid, we’ve removed the need to even have to make this decision. Web part page authors can still decide if they want the EWA to periodically refresh data at all, but if they choose to allow it they’ll find that there is no more web part property to choose whether or not to notify the user. This is because in SharePoint 2010, the EWA can refresh external data in the background just like the Excel client. So, whenever it’s time for new data to be fetched, it will just appear on screen without affecting the user’s workflow or asking them to make a choice. It’s all automatic and seamless, just like it was intended to be.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New for 2010, the ability to type into the grid (when the Office Web Apps are installed)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One of the most requested features for the EWA in SharePoint 2007 was to let users type into the grid. Parameters, while good for some things, aren’t ideal when users need to enter many values or when the spreadsheet is authored in a way that encourages users to enter data into specific regions.&lt;/P&gt;
&lt;P&gt;So, for 2010, we’ve added this capability as well. If the Office Web Apps are installed, you’ll see a new web part property in the Excel Web Access web part tool pane called ‘Typing and formula entry’. When selected, users will be able to type and enter formulas directly in the EWA.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_thumb_2.png" width=572 height=258 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This functionality allows for the creation of rich, interactive, what-if models using the EWA, and just like before, these changes are per-user, and will never affect the underlying workbook.&lt;/P&gt;
&lt;P&gt;You may be wondering if there is a way to &lt;I&gt;have&lt;/I&gt; the EWA save changes to the underlying workbook, but the answer is no. The EWA is all about allowing users to consume and explore models created in workbooks, while preserving the underlying workbook itself. Stay tuned for future posts however on ways to accomplish something similar once you have the Excel Web App installed using our new JavaScript Object Model.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Miscellaneous other improvements&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There are a whole host of other improvements to the user experience within the EWA. Some of the most requested features that have been added include:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The ability to move around the grid using the keyboard&lt;/LI&gt;
&lt;LI&gt;The ability to select multiple cells, rows or columns&lt;/LI&gt;
&lt;LI&gt;The ability to copy from the EWA and paste into another application&lt;/LI&gt;
&lt;LI&gt;The ability to resize rows and columns&lt;/LI&gt;
&lt;LI&gt;Support for many Excel keyboard shortcuts&lt;/LI&gt;
&lt;LI&gt;And more!&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;While we’ve kept the rendering just as good (and in many cases made it better) as in SharePoint 2007, we’ve done a lot of work this release to really make the overall experience of using the EWA more familiar, while at the same time opening up new scenarios that simply weren’t possible before.&lt;/P&gt;
&lt;H4&gt;Support for additional part-to-part scenarios&lt;/H4&gt;
&lt;P&gt;In SharePoint 2007, the EWA could connect with virtually all SharePoint web parts (as well as custom built web parts) using the IFilterValues web part interface. This worked great in many scenarios, as this interface allows a web part to send a value (or set of values) into a single parameter in the EWA. However, we frequently got asked if there was any way to send multiple values from a single web part into multiple parameters in the EWA, and the answer was unfortunately no.&lt;/P&gt;
&lt;P&gt;In SharePoint 2010, we’ve removed this limitation by supporting the IWebPartParameters interface. This interface is also supported by virtually all SharePoint web parts, and is also documented on MSDN to allow for customers to build their own web parts using it as well. This interface allows one web part to send multiple values into multiple parameters in the EWA.&lt;/P&gt;
&lt;P&gt;To setup a connection using the multiple-to-multiple capabilities of this interface, you will need to use SharePoint Designer, and then you can follow these simple steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create your web part page either on the server using SharePoint, or directly in SharePoint Designer, including both the EWA web part and the web part you would like to have send values into the EWA&lt;/LI&gt;
&lt;LI&gt;Open the web part page in SharePoint Designer&lt;/LI&gt;
&lt;LI&gt;Right-click on the EWA and select ‘Add Connection’ &lt;BR&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_14.png" width=394 height=469 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_14.png"&gt; &lt;/LI&gt;
&lt;LI&gt;In the Web Part Connections Wizard that will appear, select ‘Get Values for Multiple Parameters From’ &lt;BR&gt;&amp;nbsp;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_22.png" width=435 height=337 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_22.png"&gt; &lt;/LI&gt;
&lt;LI&gt;Select the source web part&lt;/LI&gt;
&lt;LI&gt;Map the values from the source web part to your defined parameters in the EWA &lt;BR&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_25.png" width=468 height=339 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010DashboardIm_10F80/image_25.png"&gt; &lt;/LI&gt;
&lt;LI&gt;You’re done!&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Remember that in order for the EWA to accept values, you must first define parameters. See the &lt;A href="http://blogs.msdn.com/excel/archive/2006/09/25/770961.aspx" mce_href="http://blogs.msdn.com/excel/archive/2006/09/25/770961.aspx"&gt;Using Parameters In Dashboards&lt;/A&gt; blog entry for details on how to do that.&lt;/P&gt;
&lt;H4&gt;Conclusion&lt;/H4&gt;
&lt;P&gt;As you can see, we’ve greatly expanded the capabilities of the Excel Web Access web part in SharePoint 2010. It’s now easier to use, more Excel-like in how it functions, and it opens up new dashboarding possibilities with its support for typing and its support for the IWebPartParameters interface.&lt;/P&gt;
&lt;P&gt;Please take a look at some of the previous blog entries related to sparklines and slicers for some of the new functionality offered in the Excel client that is also supported in the EWA, and stay tuned for more blog entries detailing the improved support for existing Excel functionality as well.&lt;/P&gt;
&lt;P&gt;If you have any specific scenarios you are wondering if we have added support for, please ask your question in the Comments section and I’ll be sure to respond.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921150" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category></item><item><title>New Posts From One of the Principal Developers Behind Excel Services</title><link>http://blogs.msdn.com/excel/archive/2009/11/10/new-posts-from-one-of-the-principal-developers-behind-excel-services.aspx</link><pubDate>Wed, 11 Nov 2009 03:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9920582</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/excel/comments/9920582.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9920582</wfw:commentRss><description>&lt;P&gt;One of our most senior developers on Excel Services, Shahar Prish, is busy writing posts in his &lt;A href="http://blogs.msdn.com/cumgranosalis" mce_href="http://blogs.msdn.com/cumgranosalis"&gt;blog&lt;/A&gt; on the new programmability features in the 2010 version of Excel Services. The first set of posts talk about REST and moving forward he will expand to the new JavaScript OM we added this release. Here are the links, if you care at all about building custom solutions for Excel and Excel Services they are a great read:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;General posts about REST:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/27/welcome-to-the-new-excel-services.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/27/welcome-to-the-new-excel-services.aspx"&gt;Welcome to the new Excel Services&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/28/so-what-does-rest-on-excel-services-look-like.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/28/so-what-does-rest-on-excel-services-look-like.aspx"&gt;So what does REST on Excel Services look like???&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/29/discovery-via-the-excel-services-rest-apis.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/29/discovery-via-the-excel-services-rest-apis.aspx"&gt;Discovery via the Excel Services REST APIs&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/30/getting-ranges-via-excel-services-rest-as-well-as-charts-and-discovery.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/10/30/getting-ranges-via-excel-services-rest-as-well-as-charts-and-discovery.aspx"&gt;Getting ranges via Excel Services REST as well as Charts and Discovery&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/02/excel-services-rest-apis-the-basics.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/02/excel-services-rest-apis-the-basics.aspx"&gt;Excel Services REST APIs – the basics&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/05/advanced-excel-services-rest-api-capabilities-where-things-get-interesting.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/05/advanced-excel-services-rest-api-capabilities-where-things-get-interesting.aspx"&gt;Advanced Excel Services REST API capabilities – passing parameters to a spreadsheet&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/09/how-to-seamlessly-embed-data-from-excel-services-spreadsheets-into-word.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/09/how-to-seamlessly-embed-data-from-excel-services-spreadsheets-into-word.aspx"&gt;How to seamlessly embed data from Excel Services spreadsheets into Word&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Excel Services Windows Gadget:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OBJECT width=425 height=344&gt;&lt;PARAM NAME="movie" VALUE="http://www.youtube.com/v/CEgqCWChdH8&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowScriptAccess" VALUE="always"&gt;
&lt;embed src="http://www.youtube.com/v/CEgqCWChdH8&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" mce_src="http://www.youtube.com/v/CEgqCWChdH8&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/03/interoducing-the-excel-services-gadget.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/03/interoducing-the-excel-services-gadget.aspx"&gt;Introducing the Excel Services Windows 7 Gadget&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/04/showing-excel-ranges-in-the-excel-services-gadget.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/04/showing-excel-ranges-in-the-excel-services-gadget.aspx"&gt;Showing Excel ranges in the Excel Services Gadget&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/06/bringing-it-all-back-home-using-advanced-rest-functionality-with-the-excel-services-gadget.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/06/bringing-it-all-back-home-using-advanced-rest-functionality-with-the-excel-services-gadget.aspx"&gt;Bringing it all back home – using advanced REST functionality with the Excel Services Gadget&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And the blog is starting to show how to actually code the gadget:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/10/coding-the-excel-services-windows-7-gadget-part-1.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/2009/11/10/coding-the-excel-services-windows-7-gadget-part-1.aspx"&gt;Coding the Excel Services Windows 7 Gadget – Part 1 - Settings&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920582" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category><category domain="http://blogs.msdn.com/excel/archive/tags/REST+API/default.aspx">REST API</category></item><item><title>Excel Services in SharePoint 2010 REST API Examples</title><link>http://blogs.msdn.com/excel/archive/2009/11/09/excel-services-in-sharepoint-2010-rest-api-examples.aspx</link><pubDate>Tue, 10 Nov 2009 07:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9920009</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/excel/comments/9920009.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9920009</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to Christian Stich for putting together this series on the REST API.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;In this final installment on the REST API, we’ll walk through a couple examples of using the REST API to embed spreadsheet data in new and interesting ways.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Embedding a ‘Live’ Chart on a SharePoint Wiki Page.&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;For this example we are embedding an Excel scatter chart on a SharePoint wiki page. The scatter chart works like an analog clock, so that you can see that the data returned via REST is dynamic, and the workbook containing the chart and the logic is attached to this blog post.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;First upload the Clock.xlsx workbook to a SharePoint document library. (the workbook is included in the archive folder that is attached to this post) &lt;BR&gt;&lt;BR&gt;Let’s assume that the workbook has been uploaded to the following location: &lt;BR&gt;&lt;BR&gt;http://contoso/Shared%20Documents/Clock.xlsx. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Then craft the REST API URI to the scatter chart named Clock &lt;BR&gt;&lt;BR&gt;http://contoso/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Clock.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts('Clock')&lt;/FONT&gt; &lt;BR&gt;&lt;BR&gt;You might want to post the URI into a browser’s address bar to verify that you can access the chart before proceeding with the next steps. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Create a SharePoint Wiki page.&lt;/LI&gt;
&lt;LI&gt;Next, start editing the wiki page by clicking on ‘Edit Page’. Since we are inserting a chart which the REST API returns as a PNG image file click on the ‘Insert’ tab on the ribbon, then click on the ‘Image’ icon and then select ‘From Address’ from the dropdown box. &lt;BR&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_3.png" width=496 height=423 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_3.png"&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Paste the URI that you have created earlier into ‘Address’ field. &lt;BR&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_6.png" width=409 height=192 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_6.png"&gt; &lt;/LI&gt;
&lt;LI&gt;Finally, ‘Stop Editing’ the page&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We see the clock when the wiki page reloads.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_9.png" width=570 height=520 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_9.png"&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;And when we reload the wiki page again, the scatter chart representing the analog clock will be retrieved again using the REST API – and will have been updated with the new time – showcasing the dynamic and live nature of Excel Services REST API calls.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_12.png" width=570 height=518 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_12.png"&gt; &lt;/P&gt;
&lt;P&gt;A more business focused scenario could include a chart on a wiki page that shows the latest sales figures for a division of a company which are retrieved by Excel Services from a SQL Server database or Analysis Services cube when the wiki page is opened (or refreshed) by a user.&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Inserting a Chart in a Word Document Using the Excel Services REST API.&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Similarly, we can use the Excel Services REST API to insert live charts in Word and PowerPoint documents.&lt;/P&gt;
&lt;P&gt;In Microsoft Word, select the ‘Insert’ tab on the ribbon, then click on the ‘Quick Parts’ icon, followed by selecting ‘Field’.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_15.png" width=570 height=283 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_15.png"&gt; &lt;/P&gt;
&lt;P&gt;Then select ‘IncludePicture’ and paste the REST URI for displaying the &lt;B&gt;RevenueChart &lt;/B&gt;from the Tax.xlsx workbook &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;into the ‘Filename or URL field’. Also, select ‘Data not stored with document’ in the ‘Field options’ column – this results in Word refreshing the chart (reflecting potentially updated numbers) each time the document is opened.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_18.png" width=570 height=378 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_18.png"&gt; &lt;/P&gt;
&lt;P&gt;Thus, we have created a Word document that contains a live and up-to-date Excel Services chart. If the data in the workbook (which itself can come from an external source, such as a SQL data base or Analysis Services Cube) is updated, so will the chart in the Word document each time the document is re-opened or when the document is refreshed (by pressing the F9 function key).&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_21.png" width=570 height=494 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_21.png"&gt; &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Building a Mash Up with Bing Maps and the Excel Services REST API.&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Bing Maps provides an SDK that enables developers to determine the location of a mouse click on the map and to get the address corresponding to this location. In this demo, the (U.S.) state corresponding to the click location is extracted from the address. Then an Excel Services REST URI is created that requests a chart with the census rankings of that state by setting the state’s name/abbreviation into the Excel Workbook.&lt;/P&gt;
&lt;P&gt;Clicking on the city of Seattle brings up the Census Rankings for Washington State.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_24.png" width=570 height=280 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_24.png"&gt; &lt;/P&gt;
&lt;P&gt;Similarly, clicking on the city of Houston brings up the Census Rankings for the State of Texas.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_27.png" width=570 height=280 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPIExam_14409/image_27.png"&gt; &lt;/P&gt;
&lt;P&gt;The entire code required to load the Excel Services Chart with the Census Rankings for each state is:&lt;/P&gt;
&lt;P&gt;document.getElementById('resultDiv').innerHTML = "&amp;lt;img src='http://contoso/_vti_bin/ExcelRest.aspx/Shared%20Documents/StateRankings.xlsx/Model/Charts(%27Report%27)?Ranges(%27State%27)="+s+"'/&amp;gt;";&lt;/P&gt;
&lt;P&gt;We assemble the REST API URI string by taking the URL to the workbook’s location and setting the range ‘State’ to the JavaScript variable ‘s’ which contains the state’s name/abbreviation.&lt;/P&gt;
&lt;P&gt;The entire JavaScript code (including the code to get the location from Bing Maps) and the workbook for this demo are included in the archive folder that is attached to this article.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Summary&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;The Excel Services REST API is a powerful yet very easy to use means of embedding Excel Services content on web pages and for creating mash-up applications. It enables users to retrieve image, HTML and Atom feed representations of items in Excel workbooks and modifying those by setting values into the workbook. The REST API also leverages the other capabilities of Excel Services, such as external data connections and user defined functions which can be used to fetch up-to-date values from external sources, which can then be retrieved, di&lt;A title=_GoBack name=_GoBack&gt;&lt;/A&gt;splayed or otherwise consumed by simply specifying a REST URI.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you’d like to read more about REST, &lt;A href="http://blogs.msdn.com/cumgranosalis/default.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/default.aspx"&gt;Shahar Prish&lt;/A&gt;, a developer on the Excel Services team who worked on the REST feature, has written a &lt;A href="http://blogs.msdn.com/cumgranosalis/archive/tags/REST/default.aspx" mce_href="http://blogs.msdn.com/cumgranosalis/archive/tags/REST/default.aspx"&gt;series of blog posts about REST&lt;/A&gt; on his blog.&lt;/P&gt;
&lt;P&gt;I look forward to your feedback on this feature.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920009" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/excel/attachment/9920009.ashx" length="63867" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Programmability/default.aspx">Programmability</category><category domain="http://blogs.msdn.com/excel/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category><category domain="http://blogs.msdn.com/excel/archive/tags/REST+API/default.aspx">REST API</category></item><item><title>Excel Services in SharePoint 2010 REST API Syntax</title><link>http://blogs.msdn.com/excel/archive/2009/11/05/excel-services-in-sharepoint-2010-rest-api-syntax.aspx</link><pubDate>Fri, 06 Nov 2009 05:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918385</guid><dc:creator>Joseph Chirilov</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/excel/comments/9918385.aspx</comments><wfw:commentRss>http://blogs.msdn.com/excel/commentrss.aspx?PostID=9918385</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;Thanks to Christian Stich for putting together this series on the REST API.&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As we saw in the &lt;A href="http://blogs.msdn.com/excel/archive/2009/11/04/simple-access-to-spreadsheet-data-using-the-excel-services-2010-rest-api.aspx" mce_href="http://blogs.msdn.com/excel/archive/2009/11/04/simple-access-to-spreadsheet-data-using-the-excel-services-2010-rest-api.aspx"&gt;previous post&lt;/A&gt;, using the Excel Services REST API is as simple as specifying a URI (Uniform Resource Identifier) in your web browser.&amp;nbsp; In this post we’ll walk through the details of the URI syntax.&lt;/P&gt;
&lt;P&gt;We start out with a simple Excel workbook stored on a SharePoint 2010 server at the following URL:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/Shared%20Documents/Tax.xlsx&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This example workbook contains two named ranges, a chart, a table and a PivotTable.&lt;/P&gt;
&lt;P&gt;In order to create a URI that can be used to access the REST API we insert &lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt; in the above URL behind the site part (in this case /Finance).&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;B&gt;Discovering Items in a Workbook&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Next we add &lt;FONT color=#ff0000&gt;/Model&lt;/FONT&gt; behind the filename (in this case /Tax.xlsx)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We now have a URI that can be used to discover the items in the workbook – the REST API returns an &lt;A href="http://en.wikipedia.org/wiki/Atom_feed" mce_href="http://en.wikipedia.org/wiki/Atom_feed"&gt;ATOM feed&lt;/A&gt; that contains the types of items that are accessible – currently ranges, charts, tables and PivotTables are supported.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb.png" width=570 height=302 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Note: In the case where the workbook resides in the root site of the SharePoint server then you would insert the &lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt; behind the server name.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Shared%20Documents/Tax.xlsx&lt;/P&gt;
&lt;P&gt;becomes…&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;B&gt;Retrieving Items in a Workbook&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;We can get a list of the named ranges in the workbook by simply appending &lt;FONT color=#ff0000&gt;/Ranges&lt;/FONT&gt; to the previous URI or you can click the link for Ranges that was returned in the previous example.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;/Ranges&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The REST API returns an ATOM feed that contains the named ranges in the workbook – this workbook contains two named ranges: &lt;B&gt;TaxRate&lt;/B&gt; and &lt;B&gt;Revenue&lt;/B&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_1.png" width=570 height=221 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;We can also get also get an HTML representation of a range by specifying the range using &lt;FONT color=#ff0000&gt;/Ranges(‘range name’)&lt;/FONT&gt; and by adding &lt;FONT color=#ff0000&gt;?$format=HTML&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;To get the HTML representation of the name range &lt;B&gt;Revenue&lt;/B&gt; we specify the following URI:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Ranges(‘Revenue’)?$format=HTML&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_2.png" width=570 height=147 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Discovering and accessing tables, PivotTables and charts is similar to discovering and accessing ranges as shown above.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Tables:&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Tables&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_3.png" width=570 height=188 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Tables(‘RevenueTable’)?$format=html&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_4.png" width=570 height=157 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;PivotTables:&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/PivotTables&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_12.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_5.png" width=570 height=192 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/PivotTables(‘PivotTable’)?$format=html&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_14.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_6.png" width=570 height=171 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Charts:&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_16.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_7.png" width=570 height=185 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_7.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)?$format=image&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_18.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_8.png" width=570 height=185 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_8.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Supported REST API Return Formats&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Notice in the previous paragraph that we added a query string parameter to the URI in the previous examples where we were accessing the actual items. This query string parameter is used to specify the format that the REST API should return. The currently supported formats are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;html&lt;/LI&gt;
&lt;LI&gt;atom&lt;/LI&gt;
&lt;LI&gt;image&lt;/LI&gt;
&lt;LI&gt;workbook&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;When &lt;FONT color=#ff0000&gt;?$format=html&lt;/FONT&gt; is specified the REST API returns an HTML representation of the item that can be displayed by the web browser.&lt;/P&gt;
&lt;P&gt;When &lt;FONT color=#ff0000&gt;?$format=atom&lt;/FONT&gt; is specified the REST API returns an ATOM feed representation of the item.&lt;/P&gt;
&lt;P&gt;When &lt;FONT color=#ff0000&gt;?$format=image&lt;/FONT&gt; is specified the REST API returns an image file (at this time the format is always PNG).&lt;/P&gt;
&lt;P&gt;I’ll cover the &lt;FONT color=#ff0000&gt;?$format=atom&lt;/FONT&gt; return format in a future post on the REST API. At that time we will also address the differences between the ATOM feeds for &lt;FONT color=#ff0000&gt;/Ranges&lt;/FONT&gt;, &lt;FONT color=#ff0000&gt;/Tables&lt;/FONT&gt; and &lt;FONT color=#ff0000&gt;/PivotTables&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;When &lt;FONT color=#ff0000&gt;?$format=workbook&lt;/FONT&gt; is specified the REST API returns the workbook which can then be opened in Excel or saved. The format of the workbook being returned matches the format of the original file – if the original file is in .xlsx format, then the workbook being returned will be in .xlsx format; if the original file is in .xlsb format, then the workbook being returned will be in .xlsb format. Same for .xlsm format.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Which Requests Support Which Formats?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;Not all formats are supported with all items. Moreover, different types of REST API requests have different default values. For example &lt;FONT color=#ff0000&gt;/Charts(‘chart name’)&lt;/FONT&gt; default return format is image - this means that you don’t have to specify &lt;FONT color=#ff0000&gt;?$format=image&lt;/FONT&gt; as part of the URI. Similarly, with &lt;FONT color=#ff0000&gt;/Ranges(‘range name’)&lt;/FONT&gt; you can omit &lt;FONT color=#ff0000&gt;?$format=html&lt;/FONT&gt; if that is the format you would like to be returned.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;is equivalent to &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)?$format=image&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Both URIs return an image in PNG format.&lt;/P&gt;
&lt;P&gt;Below is a matrix that shows the supported formats for different types of REST API requests. Specifying &lt;FONT color=#ff0000&gt;?$format=…&lt;/FONT&gt; allow you to override the default return format with another supported format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_28.png" width=344 height=375 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_28.png"&gt; &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;What About Normal Ranges?&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;The example above showed how to access a named range. It is also possible to access arbitrary, non-named, ranges using A1-style notation. The following URIs show how it’s done for accessing single cell ranges and multiple cell ranges.&lt;/P&gt;
&lt;P&gt;To get an HTML representation of the content of cell A1 on Sheet1:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Ranges(‘Sheet1!A1’)?$format=HTML&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To get an HTML representation of the content of the range A1:D4 on Sheet2:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Ranges(‘Sheet2!A1|D4’)?$format=HTML&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;NOTE: you need to replace the colon in the A1 style notation for ranges with a pipe character when used with the REST API -&amp;gt; the range A1:D4 is entered as A1|D4 &lt;/P&gt;
&lt;H4&gt;&lt;B&gt;Inserting Values&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;The Excel Services REST API provides a means to change values in the workbook. These changes only affect the values, HTML rendering info or charts returned by the REST API for that particular request. These changes are NOT saved back to the workbook, nor do they affect other REST API or Excel Web Access browser sessions.&lt;/P&gt;
&lt;P&gt;Setting values is simple and can be done by specifying single cells using A1 style notation, or by specifying a single cell named range or a parameter.&lt;/P&gt;
&lt;P&gt;In the following example, we have a workbook with a named range called “Tax Rate”, which is currently set to 10%.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;results in the original chart being returned&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_23.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_23.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_10.png" width=570 height=185 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_10.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Changing the Tax Rate to 50% in the workbook by adding &lt;FONT color=#ff0000&gt;?Ranges(‘TaxRate’)=0.50&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?Ranges(‘TaxRate’)=0.50&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;results in an updated chart being returned:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_25.png" mce_href="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_25.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_11.png" width=570 height=190 mce_src="http://blogs.msdn.com/blogfiles/excel/WindowsLiveWriter/ExcelServicesinSharePoint2010RESTAPISynt_11C8E/image_thumb_11.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;We could also have used A1 style notation to specify the cell to be changed (‘TaxRate’ has the A1 style address ‘Sheet1!B1’)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?Ranges(‘Sheet1!B1’)=0.50&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It is also possible to set multiple values into different cells. Additional query string parameters are separated by the ampersand &amp;amp; character.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?Ranges(‘TaxRate’)=0.50&amp;amp;Ranges(‘FiscalYear’)=2008&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;And you can combine this with specifying the return format – the order of the query string parameters does not matter. For example:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?Ranges(‘TaxRate’)=0.50&amp;amp;Ranges(‘FiscalYear’)=2008&amp;amp;$format=html&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;and&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?Ranges(‘FiscalYear’)=2008&amp;amp;$format=html&amp;amp;Ranges(‘TaxRate’)=0.50&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;and&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;http://contoso/Finance/&lt;FONT color=#ff0000&gt;_vti_bin/ExcelRest.aspx/&lt;/FONT&gt;Shared%20Documents/Tax.xlsx&lt;FONT color=#ff0000&gt;/Model/Charts(‘RevenueChart’)&lt;FONT color=#ff0000&gt;?$format=html&amp;amp;Ranges(‘FiscalYear’)=2008&amp;amp;Ranges(‘TaxRate’)=0.50&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;are all equivalent and return the same result.&lt;/P&gt;
&lt;H4&gt;&lt;B&gt;More To Come&lt;/B&gt;&lt;/H4&gt;
&lt;P&gt;This concludes our walk through the REST API syntax.&amp;nbsp; You should now have enough knowledge to start building REST-based solutions with Excel Services.&amp;nbsp; In my next post I’ll showcase a few simple scenarios that you can quickly build yourself.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918385" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/excel/archive/tags/Overview/default.aspx">Overview</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+Server/default.aspx">Excel Server</category><category domain="http://blogs.msdn.com/excel/archive/tags/Programmability/default.aspx">Programmability</category><category domain="http://blogs.msdn.com/excel/archive/tags/Excel+2010/default.aspx">Excel 2010</category><category domain="http://blogs.msdn.com/excel/archive/tags/REST+API/default.aspx">REST API</category></item></channel></rss>