<?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>edhild's WebLog : SharePoint</title><link>http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx</link><description>Tags: SharePoint</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>My Presentation for Tomorrow's SharePoint Best Practices Conference</title><link>http://blogs.msdn.com/edhild/archive/2009/08/23/my-presentation-for-tomorrow-s-sharepoint-best-practices-conference.aspx</link><pubDate>Mon, 24 Aug 2009 02:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9882175</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/9882175.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=9882175</wfw:commentRss><description>&lt;P&gt;I just wanted to post the deck I will be using for my session (SPDev 314) at the SharePoint Best Practices Conference in Reston. My session includes mostly demos around document generation scenarios with SharePoint. There is a lot of use of the new Open XML SDK. Most of the code samples have already made it onto this blog. So I'll just post the deck. Enjoy!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://cid-601cfa765e7a6fd3.skydrive.live.com/self.aspx/Public/conference/SPDEV314%20Hild.pptx"&gt;http://cid-601cfa765e7a6fd3.skydrive.live.com/self.aspx/Public/conference/SPDEV314%20Hild.pptx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9882175" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/Office+2007/default.aspx">Office 2007</category></item><item><title>Demoing Geneva Beta 2 with MOSS 2007</title><link>http://blogs.msdn.com/edhild/archive/2009/06/15/demoing-geneva-beta-2-with-moss-2007.aspx</link><pubDate>Mon, 15 Jun 2009 19:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9753713</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/9753713.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=9753713</wfw:commentRss><description>&lt;P&gt;I put together a little video demo of using Geneva Beta 2 stuff with MOSS 2007. You can get these VMs using the links from the previous post, but it is an awful lot to download and setup. So I thought a video might be appealing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IFRAME style="WIDTH: 500px; HEIGHT: 375px" src="http://silverlight.services.live.com/invoke/55696/Demoing%20Geneva%20Beta%202%20with%20MOSS%202007/iframe.html" frameBorder=0 scrolling=no mce_src="http://silverlight.services.live.com/invoke/55696/Demoing%20Geneva%20Beta%202%20with%20MOSS%202007/iframe.html"&gt;&lt;/IFRAME&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9753713" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>SharePoint and CRM</title><link>http://blogs.msdn.com/edhild/archive/2008/09/05/sharepoint-and-crm.aspx</link><pubDate>Fri, 05 Sep 2008 22:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8926801</guid><dc:creator>edhild</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edhild/comments/8926801.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=8926801</wfw:commentRss><description>&lt;P&gt;It isn't too often that I get to share publicly some of the work we do at the MTC for customers. Fortunately, the US Air Force let Microsoft turn a proof of concept I worked on into a case study. This POC was done a while ago - in fact you'll recognize some of it is on older technology than the current revisions. The solution was focused on providing a tracking system for requests for forces that come in from JFCOM. The current system (at the time) was simply Outlook and Emails. The action officers described spending 50% of their time sorting and searching through complicated email folder hierarchies. We proposed and build a system leveraging Microsoft CRM and SharePoint. On Microsoft's site, you can see a video about this solution, a demo of it online, and even more info of how this solution has generalized to tracking just about any task:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/industry/government/solutions/taskmanagement/default.mspx" mce_href="http://www.microsoft.com/industry/government/solutions/taskmanagement/default.mspx"&gt;http://www.microsoft.com/industry/government/solutions/taskmanagement/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;By the way, they caked make up on me for the video...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8926801" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Workaround for the SharePoint Asset Inventory Tool ';' error</title><link>http://blogs.msdn.com/edhild/archive/2008/06/25/workaround-for-the-sharepoint-asset-inventory-tool-error.aspx</link><pubDate>Thu, 26 Jun 2008 04:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8654298</guid><dc:creator>edhild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edhild/comments/8654298.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=8654298</wfw:commentRss><description>&lt;P&gt;I was preparing for the upcoming conference and wanted to demo some of the new tools coming for SharePoint. Often I have heard the customer's IT department talk about finding rogue SharePoint installations and getting better metrics on how these servers were being used, so I thought I would spend some time with the SharePoint Asset Inventory Tool. This tool is currently in Beta, but is publicly available through Microsoft's Connect site. It is basically a scanning solution that looks for SharePoint servers and dumps metrics about them into a SQL store with some nice SQL Reports. I installed the tool, only to get an error half-way through the scan. The error was something about a malformed SQL statement near a ';' and an ELSE statement. Unfortunately, I had nothing in the repository to even show as part of the demo. So the hunt began...&lt;/P&gt;
&lt;P&gt;Looking through log files, I found the offending stored procedure to be &lt;SPAN class=7em id=ctl00_MasterBody_WorkaroundList_ctl00_WorkaroundDescriptionLabel&gt;dbo.SP_INSUPD_DEVICES_PORT_NUMBER. This proc was in the SATAssets database on my SQL server. If you modify this proc, you will notice that it builds a dynamic SQL string. In this string, one of the variables is not covered by two single quptes ''. So ...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=7em&gt;I&lt;/SPAN&gt;&lt;SPAN class=7em&gt;F('' + PORT_NUMBER + '' IS NOT NULL) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=7em&gt;notice that I added the 2 ''. This proc and the SATAssets DB seem to be recreated each time you run a new scan after the initialization screen. Start the wizard, wait for the initialize prompt to go away, modify the proc, and then it works.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=7em&gt;I also am a big fan of host headers in my dev environments. I noticed I also had to make sure that I had a web application that resolved the the server name on port 80 (or one of the ports it was looking for) to get my results. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=7em&gt;I've also posted this workaround in the forums so hopefully you'll have some luck before the next drop happens on the Connect beta site.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8654298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Video: Building Presentations from SharePoint Site Content</title><link>http://blogs.msdn.com/edhild/archive/2008/01/03/video-building-presentations-from-sharepoint-site-content.aspx</link><pubDate>Thu, 03 Jan 2008 19:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6969508</guid><dc:creator>edhild</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/edhild/comments/6969508.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=6969508</wfw:commentRss><description>&lt;P&gt;First sorry for the long time away from posting. It was quite a busy fourth quarter. But welcome to 2008! &lt;/P&gt;
&lt;P&gt;I put together a quick video blog of two demonstrations I show about how to automate the creation of PowerPoint presentations based on SharePoint site content. The first part of the demo shows how a Visual Studio Tools for Office add-in for PowerPoint can call SharePoint's web services to retrieve content and build slides. The second approach shows how this can be done completely server side by manipulating the new Open XML formatted files. Both demos usually get people excited; I hope you enjoy them. The code for these is available on Apress' web site since they are from my book: Pro SharePoint Solution Development. This book is mentioned a lot in the blog so it should be easy to find more info if you are interested. Sorry for the background noise in the video. The HVAC system here is running full strength on this cold day.&lt;/P&gt;
&lt;P&gt;Also, I will be presenting at the upcoming SharePoint conference in Seattle in March. My topic will be "Enforce Governance by Provisioning Sites through Workflows" or something like that. Stop by and say hi. I may have a few books to hand out. &lt;A href="http://www.mssharepointconference.com/Pages/default.aspx" mce_href="http://www.mssharepointconference.com/Pages/default.aspx"&gt;http://www.mssharepointconference.com/Pages/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Just an update: Ian at wssdemo.com has hosted this video on a streaming server which has much better quality: &lt;SPAN lang=EN-NZ style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-NZ; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://xpstream.winisp.net/imorrish/generate_ppt_sharepoint.wmv"&gt;&lt;FONT color=#0000ff&gt;http://xpstream.winisp.net/imorrish/generate_ppt_sharepoint.wmv&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;EMBED pluginspage=http://macromedia.com/go/getflashplayer src=http://images.soapbox.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash flashvars="c=v&amp;amp;v=272932c4-576a-47ea-9f8e-66b6bb424c04" wmode="transparent" quality="high" mce_src="http://images.soapbox.msn.com/flash/soapbox1_1.swf"&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;A title="Building Presentations from SharePoint Content" href="http://soapbox.msn.com/video.aspx?vid=272932c4-576a-47ea-9f8e-66b6bb424c04" target=_new mce_href="http://soapbox.msn.com/video.aspx?vid=272932c4-576a-47ea-9f8e-66b6bb424c04"&gt;Video: Building Presentations from SharePoint Content&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6969508" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/VSTO+2005/default.aspx">VSTO 2005</category><category domain="http://blogs.msdn.com/edhild/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint+2007+book/default.aspx">SharePoint 2007 book</category></item><item><title>Book Review: Essential SharePoint 2007 by Scott Jamison and others</title><link>http://blogs.msdn.com/edhild/archive/2007/08/03/book-review-essential-sharepoint-2007-by-scott-jamison-and-others.aspx</link><pubDate>Fri, 03 Aug 2007 17:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4207588</guid><dc:creator>edhild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edhild/comments/4207588.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=4207588</wfw:commentRss><description>This book fills a niche that has long been lacking in the SharePoint space. Where most books are targeted exclusively to developers or administrators, this book takes a fresh approach and focuses on the business impact of the technology. This book contains all the things you never find in most SharePoint books. How to roll out the technology so that end-users will use it, how to construct the taxonomy, what planning needs to be performed to increase the likelihood of success. Scott's approach creates a book that any business decision maker will want to read whose organization is considering SharePoint. More impressively, this is a book that developers and administrators should read to gain insight on how to make sure their implementations won't fail. Scott wealth of experience working with customers and implementations shines through. Great work! Here is a link to amazon: &lt;A href="http://www.amazon.com/Essential-SharePoint-2007-Scott-Jamison/dp/0321421744/ref=pd_bbs_sr_1/102-4916604-4874568?ie=UTF8&amp;amp;s=books&amp;amp;qid=1186149930&amp;amp;sr=8-1"&gt;http://www.amazon.com/Essential-SharePoint-2007-Scott-Jamison/dp/0321421744/ref=pd_bbs_sr_1/102-4916604-4874568?ie=UTF8&amp;amp;s=books&amp;amp;qid=1186149930&amp;amp;sr=8-1&lt;/A&gt;.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4207588" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://blogs.msdn.com/edhild/archive/tags/Book+Reviews/default.aspx">Book Reviews</category></item><item><title>How To: Display browser enabled InfoPath forms in a web part supporting connections</title><link>http://blogs.msdn.com/edhild/archive/2007/05/08/display-browser-enabled-infopath-forms-in-a-web-part.aspx</link><pubDate>Wed, 09 May 2007 04:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2491885</guid><dc:creator>edhild</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/edhild/comments/2491885.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=2491885</wfw:commentRss><description>&lt;P&gt;Here is a little something from one of the chapters in the book (&lt;A class="" href="http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx" mce_href="http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx"&gt;http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;With MOSS, there is the new Forms Services capability that allows you to take an InfoPath designed form and present it to the user as a web based form. When associated with a document library, the user can click New and the page opens displays the web-based form in a full page view of the browser. The user fills out the form and clicks save resulting in the xml being stored as an item in the library. Another feature that is well documented is that the Forms Server capability of MOSS also ships a&amp;nbsp;ASP.NET server control (&lt;A href="http://msdn2.microsoft.com/en-us/library/aa701078.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa701078.aspx&lt;/A&gt;) that you can use in your own custom ASP.NET pages. This control is located in the &lt;B&gt;Microsoft.Office.InfoPath.Server.dll&lt;/B&gt; assembly. It is typically located at &lt;I&gt;Drive&lt;/I&gt;:\Program Files\Microsoft Office Servers\12.0\Bin, where &lt;I&gt;Drive&lt;/I&gt; is the location where Office Forms Server 2007 or Office SharePoint Server 2007 is installed.&lt;/P&gt;
&lt;P&gt;Upon closer examination of this ASP.NET server control, you may notice that it is in fact a web part. But this is not a web part that you would want to add to the SafeControls list and drag into a site as it expects to run in a full screen mode and will obliterate everything else on the page. I have had a vision that when viewing the items in the form library, a user should be able to open the form on the same page as the list of form instances. The solution is a simple one. I created a custom web part that wraps the out of the box control and adds support for connections. This way it can be dragged onto the AllItems.aspx page and connected to the view of the form library items. So a user can select a form, open it, edit the data, and save it back all in the same screen.&lt;/P&gt;
&lt;P&gt;Here is the code form the web part.&lt;/P&gt;
&lt;P&gt;Imports System.Web.UI.WebControls.WebParts&lt;BR&gt;Imports System.Web.UI.WebControls&lt;BR&gt;Imports Microsoft.SharePoint&lt;BR&gt;Imports Microsoft.SharePoint.WebControls&lt;BR&gt;Imports Microsoft.Office.InfoPath.Server.Controls&lt;BR&gt;Imports System.Xml&lt;/P&gt;
&lt;P mce_keep="true"&gt;Public Class FormViewWebPart&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inherits System.Web.UI.WebControls.WebParts.WebPart&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Const defaultXmlLocation = ""&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_xmlLocation As String = defaultXmlLocation&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private WithEvents m_xmlFormView As XmlFormView&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_errorMessage As String = String.Empty&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WebBrowsable(), Personalizable(PersonalizationScope.User), WebDisplayName("XMLLocation"), WebDescription("URL of web-enabled InfoPath form")&amp;gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Property XMLLocation() As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return m_xmlLocation&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As String)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlLocation = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Property&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.EnsureChildControls()&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If m_errorMessage &amp;lt;&amp;gt; String.Empty Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Write(m_errorMessage)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Me.m_xmlLocation.Length &amp;gt; 0) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView.XmlLocation = m_xmlLocation&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView.DataBind()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView.Visible = True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyBase.RenderContents(writer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Overrides Sub CreateChildControls()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyBase.CreateChildControls()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView = New XmlFormView()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView.Visible = False&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Controls.Add(Me.m_xmlFormView)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_xmlFormView.EditingStatus = XmlFormView.EditingState.Editing&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub m_xmlFormView_Initialize(ByVal sender As Object, ByVal e As Microsoft.Office.InfoPath.Server.Controls.InitializeEventArgs) Handles m_xmlFormView.Initialize&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Sub&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;ConnectionConsumer("XMLLocation")&amp;gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub GetConnectionInterface(ByVal providerPart As IWebPartField)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim callback As FieldCallback = New FieldCallback(AddressOf Me.ReceiveField)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; providerPart.GetFieldValue(callback)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub ReceiveField(ByVal field As Object)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.EnsureChildControls()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (field IsNot Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.m_xmlLocation = CType(field, String)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;End Class&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2491885" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>How To: Connect web parts during site provisioning</title><link>http://blogs.msdn.com/edhild/archive/2007/04/17/how-to-connect-web-parts-during-site-provisioning.aspx</link><pubDate>Tue, 17 Apr 2007 21:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2165393</guid><dc:creator>edhild</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/edhild/comments/2165393.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=2165393</wfw:commentRss><description>&lt;P&gt;If you have been following the How To's recently posted here, you will remember that I have a site definition that has the BDC Item web part on it. And I have a custom filter web part that pulls an ID out of the web's property bag. The only remaining item is how to get these two web parts connected during the creation of a site.&lt;/P&gt;
&lt;P&gt;Since I used the SharePoint Solution Generator in the WSS Extensions, to capture the site definition, it gives me a hook into an event handler to do exactly that. In the Site Provisioning Handler folder of the VS.NET project it creates, there is a SiteProvisioning.cs file. Here is the code I added to the OnActivated event:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;public void OnActivated(SPFeatureReceiverProperties properties)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWeb web = (SPWeb)properties.Feature.Parent;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPLimitedWebPartManager mgr = web.GetLimitedWebPartManager("default.aspx", PersonalizationScope.Shared);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //filter web part&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.UI.WebControls.WebParts.WebPart part1 = mgr.WebParts[2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //BDC Web Part&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.UI.WebControls.WebParts.WebPart part2 = mgr.WebParts[3];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConsumerConnectionPointCollection ccc = mgr.GetConsumerConnectionPoints(part2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProviderConnectionPointCollection ppp = mgr.GetProviderConnectionPoints(part1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TransformableFilterValuesToEntityInstanceTransformer t = new TransformableFilterValuesToEntityInstanceTransformer();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWebPartConnection conn = mgr.SPConnectWebParts(part1, ppp[0], part2, ccc[0], t);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mgr.SPWebPartConnections.Add(conn);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;This code isn't that hard. The trick it to realize that since my custom web part is coded using the ASP.NET 2.0 style, I need to rely on the web part manager class to construct the connection. Based on the position of the web parts in my ONET.XML file, I could get a reference to each of them. Then just grabbed the consumer and provider connection points and built the connection. Since this connection requires the integer ID to be transformed into an entity instance, you need to provide an instance of the appropriate transformer when constructing the connection. In this case, the transformer is the TransformableFilterValuesToEntityInstanceTransformer&amp;nbsp; class.&lt;/P&gt;
&lt;P&gt;It is possible to debug this code. Just have Visual Studio attached before you provision the site. And your breakpoint inside this event will be fired.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2165393" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>SharePoint Book Update</title><link>http://blogs.msdn.com/edhild/archive/2007/01/28/sharepoint-book-update.aspx</link><pubDate>Mon, 29 Jan 2007 07:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1549928</guid><dc:creator>edhild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edhild/comments/1549928.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=1549928</wfw:commentRss><description>&lt;P&gt;Just chiming in on where we stand on the book. I just finished writing up the conclusion chapter. I've updated the TOC (&lt;A href="http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx" mce_href="http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx"&gt;http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx&lt;/A&gt;). The chapter is called "Realizing the Vision". In this chapter we spend some time on helping you identify if SharePoint is a fit for your custom application. And we look to the horizon to see VSTO "Orcas", LOBi for MOSS 2007, and the licensing of the Office UI. We also take a moment to review some helpful tools that will help you on your way to developing on the Office platform: SharePoint Solution Generator, WSS Extensions for VS.NET, and the ECM Tookit.&lt;/P&gt;
&lt;P&gt;The InfoPath/Forms Services chapter is nearly done, so check back soon on that. I'm also half way through a smart document solution for Excel that allows users to capture list content from different sites so they can modify them in an offline scenario. This one requires VSTO 2005 for the document level project support so its developed with Office 2003. The solution still runs in Office 2007 of course. As soon as I am father along, I'll post some screen shots.&lt;/P&gt;
&lt;P&gt;Plus updates from my upcoming conference. I am participating in two sesssions with Bob German. One is on features/templates/solutions and the other is on enhancing web content management. I'm sure a few goodies from my demos will make it up here shortly.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1549928" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint+2007+book/default.aspx">SharePoint 2007 book</category></item><item><title>The unwritten work-arounds for using the SharePoint Solution Generator</title><link>http://blogs.msdn.com/edhild/archive/2007/01/25/the-unwritten-work-arounds-for-using-the-sharepoint-solution-generator.aspx</link><pubDate>Fri, 26 Jan 2007 05:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1533494</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/1533494.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=1533494</wfw:commentRss><description>&lt;P&gt;So I have been working on a demonstration lately with the new SharePoint Solution Generator which is an included tool in the Windows SharePoint Services Extensions for Visual Studio. The promise of this tool is that you can point it at an existing site or list and get an equivalent SharePoint list or site definition. Notice I did not use the word "template". Templates are easy to create and that feature has been available even in SharePoint 2003. The difference is that a definition is maintained on the file system of the front-end web servers. Templates are just deltas of changes that have been made from the original definition. The importance of definitions is that they provide the possibility of changing and having the change ripple through existing instances. So this tool has quite the attraction as developers have been converting templates into definitions by hand for some time. In addition to this tool, this package includes new VS.NET project templates. You can get it at: http://www.microsoft.com/downloads/details.aspx?FamilyID=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&amp;amp;DisplayLang=en.&lt;/P&gt;
&lt;P&gt;Now there are many posts out there on the net that will walk you through how to use it. But very few of them will make this point. This tool must be run on the SharePoint server and it makes one HUGE assumption. The assumption is that you have a web application that is accessible from the url &lt;A href="http://yourcomputername/" mce_href="http://yourcomputername/"&gt;http://YOURCOMPUTERNAME&lt;/A&gt;. Now I know that most dev systems are setup that way. Mine is not. The only web app I have has a fully qualified name of portal.sample.com. So to get this tool to even run. You must first change the value of the COMPUTERNAME environment variable from a command window before launching the tool (from the same window). Something like:&lt;/P&gt;
&lt;P&gt;Set COMPUTERNAME=portal.sample.com&lt;/P&gt;
&lt;P&gt;and then start the tool from its executable.&lt;/P&gt;
&lt;P&gt;This is quite tolerable, but unfortunately the VS.NET project templates make the same assumption. So to get them all to work as expected, you must also start VS.NET from the same command window after using the COMPUTERNAME variable.&lt;/P&gt;
&lt;P&gt;Lastly, the capture site definition feature doesn't like to play nice with complicated sites or ones that have MOSS features enabled. I have often found myself setting up the site and then de-activating all of the features except Team Collaboration to get it to capture. Web part connections also seem to throw it off a bit. I haven't explored all the variables here, but thought I would at least pass on the advice.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1533494" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Almost finished my book... Pro SharePoint Solution Development: Combining .NET, SharePoint, and Office 2007</title><link>http://blogs.msdn.com/edhild/archive/2006/12/08/almost-finished-my-book-pro-sharepoint-development-combining-net.aspx</link><pubDate>Sat, 09 Dec 2006 06:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1243408</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/1243408.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=1243408</wfw:commentRss><description>&lt;P&gt;So I have not been posting for quite some time. The major reason is that every moment outside of work is being put into this latest effort. The book is called "Pro SharePoint Solution Development: Combining .NET, SharePoint, and Office 2007". It is going to be published by Apress in the spring. I'm nearing the point where most of the first drafts are complete and people are seeing my name on Amazon.com, sooooo&amp;nbsp;I figured it was time to start sharing.&lt;/P&gt;
&lt;P&gt;The book is for developers and focuses on solution development using Office 2007, Microsoft Office SharePoint Server 2007, and Visual Studio Tools for Office 2005 SE. With these three major components, we are able to tackle some common problems facing information workers as they try to collaborate, use data effectively, etc. After a few overview chapters on each technology, the other chapters are self contained problems/solutions. &lt;/P&gt;
&lt;P&gt;I have posted a page containing more details and the current state of the table of contents. I will use this blog to elaborate as we finish the book up: &lt;A href="http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx"&gt;http://blogs.msdn.com/edhild/pages/pro-sharepoint-solution-development-combining-net-sharepoint-and-office-2007.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Come back for updates! Thanks -Ed&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1243408" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/edhild/archive/tags/VSTO+2005/default.aspx">VSTO 2005</category><category domain="http://blogs.msdn.com/edhild/archive/tags/Office+2007/default.aspx">Office 2007</category><category domain="http://blogs.msdn.com/edhild/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Generate a PowerPoint Presentation based on Site Data</title><link>http://blogs.msdn.com/edhild/archive/2005/12/18/505321.aspx</link><pubDate>Mon, 19 Dec 2005 04:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:505321</guid><dc:creator>edhild</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edhild/comments/505321.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=505321</wfw:commentRss><description>&lt;P&gt;Wow. Two posts in the same day. Hopefully that makes up for the long delay! If you couldn't tell I was heads down in a proof-of-concept, but I'm at least posting all the goodies :)&lt;/P&gt;
&lt;P&gt;So this next piece isn't something I highly recommend. But it is great eye candy and becomes much more a possibility with Office 12 so I didn't mind putting it together. The concept is simple. A team site can be used for a group of users to come together to collaborate. As SharePoint admins, we recognize that there are specific reasons why the group comes together and this leads us to building site definitions/templates. As the users interact with the site, they are collecting data, completeing lists, filling out forms, etc. What if we could allow them to generate a briefing PowerPoint presentation based on live data collected in the site? After showing off this solution to just a few customers, I see that it resonates real well!&lt;/P&gt;
&lt;P&gt;So the architecture here is simple. I built a PowerPoint file that is used as a template where the slides have placeholders for content that needs to be filled in. These placeholders are text strings like [@Date] and [@Title], etc. In my sample, I had two InfoPath forms. The first one had some general field data and the second one was an agenda whose items needed to be placed on a slide. To build the PowerPoint presentation, my solution automated PowerPoint on the server, opened the template, retrieved the files, filled in the data, and then saved it back to the site. There are lots of reasons why automating PowerPoint on the server is a bad idea and I'm not going to go into a lot of detail here. However, this idea is something that is going to gain momentum as Office 12 and its XML file format become a reality next year. I plan to put together an Office 12 version of this demo soon so stay tuned.&lt;/P&gt;
&lt;P&gt;To even automate PowerPoint on the server, there are a lot of DCOM settings that you need to be concerned with. The following KB article should walk you through how you need to setup your environment: &lt;A href="http://support.microsoft.com/kb/288367/"&gt;http://support.microsoft.com/kb/288367/&lt;/A&gt;. Also make sure that when you install PowerPoint on the server, you do a custom install to get the interop assemblies installed. You will need to reference Microsoft.Office.Interop.PowerPoint. My code assumes the following namespaces are referenced:&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;Imports PowerPoint = Microsoft.Office.Interop.PowerPoint&lt;BR&gt;Imports Office = Microsoft.Office.Core&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Once configured, my solution executed the automation in a web part. The web part was just a simple button that when clicked performed the necessary actions. Here is most of the button click event with my comments inline. I selected VB.NET since the COM interop with Office would be easier to code.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Private Sub btnGenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerate.Click&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim app As PowerPoint.Application&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pres As PowerPoint.Presentation&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim slide As PowerPoint.Slide&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim assistantOn As Boolean&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim siteUrl As String = Me.Context.Request.Url.ToString()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; siteUrl = siteUrl.Substring(0, siteUrl.IndexOf("default.aspx") - 1)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt;'all of these were properties that allow me to retrieve the files or build links to docs in the site&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim template As String = siteUrl &amp;amp; pptTemplateFileStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim agenda As String = siteUrl &amp;amp; agendaFileStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim resultFileName As String = siteUrl &amp;amp; resultFileNameStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim securityUrl As String = siteUrl &amp;amp; securityViewStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim communicationUrl As String = siteUrl &amp;amp; communicationsViewStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim infoFile As String = siteUrl &amp;amp; infoFileStr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim redirect As String = siteUrl &amp;amp; redirectStr&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'Start Powerpoint and make its window visible but minimized.&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app = New PowerPoint.Application&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app.Visible = True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app.WindowState = PowerPoint.PpWindowState.ppWindowMinimized&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt;'Here I am&amp;nbsp;figuring out which&amp;nbsp;XML file I need to open. I am traversing the SPS object model to find the file&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim parts As String() = infoFileStr.Split("/")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Dim web As SPWeb = SPControl.GetContextWeb(Me.Context)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sharedDocs As SPFolder = web.GetFolder(parts(0))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim info As SPFile = sharedDocs.Files.Item(parts(1))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Byte() = info.OpenBinary()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT face="Courier New" color=#008000 size=2&gt;'I&amp;nbsp;know the file is&amp;nbsp;XML so I get its string representation&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim iStr As String = System.Text.UTF8Encoding.UTF8.GetString(i)&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;'Create a new presentation based on the specified template.&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pres = app.Presentations.Open(template, , , True)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not (pres Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'retrieve the general info xml file&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim infoXml As XmlDocument = New XmlDocument&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;infoXml.LoadXml(iStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(infoXml.NameTable)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespaceManager.AddNamespace("my", "&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-11-03T22:41:52"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-11-03T22:41:52&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'query here for general infomation&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim title As String = String.Empty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim name As String = String.Empty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim eta As DateTime = DateTime.Today&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim titleNode As XmlNode = infoXml.SelectSingleNode("//my:DV", namespaceManager)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not (titleNode Is Nothing)) Then title = titleNode.InnerText&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim nameNode As XmlNode = infoXml.SelectSingleNode("//my:DVName", namespaceManager)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not (nameNode Is Nothing)) Then name = nameNode.InnerText&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim etaNode As XmlNode = infoXml.SelectSingleNode("//my:ETA", namespaceManager)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Not (etaNode Is Nothing)) Then eta = etaNode.InnerText&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'cleanup&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoXml = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iStr = Nothing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'work with title slide. I have some helper&amp;nbsp;code&amp;nbsp;at the end that helps you find the names of shapes&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = pres.Slides.Item(1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Text Box 14").TextFrame.TextRange.Replace("[@Date]", eta.ToShortDateString())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Text Box 14").TextFrame.TextRange.Replace("[@Title]", title)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = Nothing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'work with second slide. This slide had an additional challenge that I wanted to&amp;nbsp;check every line of a bullet list&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = pres.Slides.Item(2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Date]", eta.ToShortDateString())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Title]", title)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 3").TextFrame.TextRange.Replace("[@Name]", name)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 3").TextFrame.TextRange.Replace("[@Date]", eta.ToShortDateString())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim lineText As PowerPoint.TextRange&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each lineText In slide.Shapes.Item("Rectangle 7").TextFrame.TextRange.Lines&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lineText.Replace("[@Name]", name)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = Nothing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'work with third slide. This was the agenda section&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bodyText As String = String.Empty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = pres.Slides.Item(3)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Date]", eta.ToShortDateString())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Title]", title)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;parts = agendaFileStr.Split("/")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim templates As SPFolder = web.GetFolder(parts(0))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info = templates.Files.Item(parts(1))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = info.OpenBinary()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iStr = System.Text.UTF8Encoding.UTF8.GetString(i)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim agendaXml As XmlDocument = New XmlDocument&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; agendaXml.LoadXml(iStr)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespaceManager = New XmlNamespaceManager(agendaXml.NameTable)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespaceManager.AddNamespace("mtg", "&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/office/infopath/2003/sample/MeetingAgenda"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.microsoft.com/office/infopath/2003/sample/MeetingAgenda&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'place each agenda item into the body text of the shape&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Dim nodes As XmlNodeList = agendaXml.SelectNodes("//mtg:agendaItems/mtg:agenda", namespaceManager)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim nodeItem As XmlNode&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each nodeItem In nodes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim subject As String = nodeItem("mtg:subject").InnerText&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim duration As String = nodeItem("mtg:duration").InnerText&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bodyText = bodyText &amp;amp; duration &amp;amp; Chr(9) &amp;amp; subject &amp;amp; vbCrLf&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 3").TextFrame.TextRange.Text = bodyText&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; agendaXml = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iStr = Nothing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'work with fourth slide. This slide had some graphics that I wanted to change the&amp;nbsp;color of.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'sort of a score card approach where I&amp;nbsp;changed the&amp;nbsp;color from green to yellow and hyperlinked the text&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = pres.Slides.Item(4)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Date]", eta.ToShortDateString())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Rectangle 2").TextFrame.TextRange.Replace("[@Title]", title)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes("AutoShape 4").Fill.ForeColor.RGB = 65535&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes("AutoShape 9").Fill.ForeColor.RGB = 65535&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Text Box 13").TextFrame.TextRange.ActionSettings(PowerPoint.PpMouseActivation.ppMouseClick).Hyperlink.Address = securityUrl&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide.Shapes.Item("Text Box 18").TextFrame.TextRange.ActionSettings(PowerPoint.PpMouseActivation.ppMouseClick).Hyperlink.Address = communicationUrl&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; slide = Nothing&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;'save to document library&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pres.SaveAs(resultFileName)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endStr = "Completed. You presentation is located &amp;lt;a href='" &amp;amp; redirect &amp;amp; "'&amp;gt;here&amp;lt;/a&amp;gt;."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.btnGenerate.Visible = False&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.errorStr = errorStr &amp;amp; ex.Message &amp;amp; ex.StackTrace&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;'Close the presentation without saving changes and quit PowerPoint.&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not (pres Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pres.Saved = True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pres.Close()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pres = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not (app Is Nothing) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app.Quit()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app = Nothing&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GC.Collect()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;This is by now means a production solution. But it gets a lot of jaws dropping in the audience. I used the following code during the development of the web part to find out what shapes were on a given slide:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;slide = pres.Slides.Item(4)&lt;BR&gt;Dim shape As PowerPoint.Shape&lt;BR&gt;For Each shape In slide.Shapes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;errorStr = errorStr &amp;amp; shape.Name&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;If (shape.HasTextFrame) Then errorStr = errorStr &amp;amp; " " &amp;amp; shape.TextFrame.TextRange.Runs(1, -1).Text&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;errorStr = errorStr &amp;amp; "&amp;lt;br&amp;gt;"&lt;BR&gt;Next&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;My first&amp;nbsp;version of the code&amp;nbsp;used an XMLUrlResolver to load the XML files from the Url. I liked this approach and it worked in my dev environment. However, the demo environment was locked down a bit more so I went with opening the file from the SharePoint object model.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;'setup credentials for requesting infopath xml files&lt;/FONT&gt;&lt;BR&gt;Dim resolver As XmlUrlResolver = New XmlUrlResolver&lt;BR&gt;resolver.Credentials = System.Net.CredentialCache.DefaultCredentials&lt;BR&gt;infoXml.XmlResolver = resolver&lt;BR&gt;infoXml.Load(infoFile)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=505321" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Display InfoPath form data in the XML web part</title><link>http://blogs.msdn.com/edhild/archive/2005/12/18/505317.aspx</link><pubDate>Mon, 19 Dec 2005 04:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:505317</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/505317.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=505317</wfw:commentRss><description>&lt;P&gt;I recently was working on a proof-of-concept where we wanted a team site to display on the default.aspx page some of the data that existed in an InfoPath form. This data needed to be seen by everyone without requiring them to open up the form file. We also wanted to make sure that if the data in the InfoPath form changed, the site reflected that. You might think that we broke down and wrote some custom code. You would of course be wrong. It turns out that we could easily leverage the out-of-the-box XML web part!&lt;/P&gt;
&lt;P&gt;The XML web part is pretty simple to use. For my site, I simply used the XML Link property and pointed it to the saved InfoPath form "shared documents/test2.xml". Once connected to the file, it is a rather simple XSLT that can be used to retrieve the data. Here is my XSLT:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;BR&gt;&amp;lt;xsl:stylesheet version="1.0" xmlns:xsl="&lt;/FONT&gt;&lt;A href="http://www.w3.org/1999/XSL/Transform"&gt;&lt;FONT face="Courier New" size=2&gt;http://www.w3.org/1999/XSL/Transform&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:xsi="&lt;/FONT&gt;&lt;A href="http://www.w3.org/2001/XMLSchema-instance"&gt;&lt;FONT face="Courier New" size=2&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:xhtml="&lt;/FONT&gt;&lt;A href="http://www.w3.org/1999/xhtml"&gt;&lt;FONT face="Courier New" size=2&gt;http://www.w3.org/1999/xhtml&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:s0="&lt;/FONT&gt;&lt;A href="http://www.sourcecode.co.za/webservices/InfoPathService"&gt;&lt;FONT face="Courier New" size=2&gt;http://www.sourcecode.co.za/webservices/InfoPathService&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:dfs="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.microsoft.com/office/infopath/2003/dataFormSolution&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:mime="&lt;/FONT&gt;&lt;A href="http://schemas.xmlsoap.org/wsdl/mime/"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.xmlsoap.org/wsdl/mime/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:tm="&lt;/FONT&gt;&lt;A href="http://microsoft.com/wsdl/mime/textMatching/"&gt;&lt;FONT face="Courier New" size=2&gt;http://microsoft.com/wsdl/mime/textMatching/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:soapenc="&lt;/FONT&gt;&lt;A href="http://schemas.xmlsoap.org/soap/encoding/"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.xmlsoap.org/soap/encoding/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:soap="&lt;/FONT&gt;&lt;A href="http://schemas.xmlsoap.org/wsdl/soap/"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.xmlsoap.org/wsdl/soap/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:http="&lt;/FONT&gt;&lt;A href="http://schemas.xmlsoap.org/wsdl/http/"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.xmlsoap.org/wsdl/http/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:ns1="&lt;/FONT&gt;&lt;A href="http://schemas.xmlsoap.org/wsdl/"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.xmlsoap.org/wsdl/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:my="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-11-03T22:41:52"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-11-03T22:41:52&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xmlns:xd="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/office/infopath/2003"&gt;&lt;FONT face="Courier New" size=2&gt;http://schemas.microsoft.com/office/infopath/2003&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;" xml:lang="en-us" &amp;gt;&lt;BR&gt;&amp;lt;xsl:output method="html"/&amp;gt;&lt;BR&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;BR&gt;Title: &amp;lt;xsl:value-of select='//my:DV' /&amp;gt;&amp;lt;br/&amp;gt;&lt;BR&gt;Date of Visit: &amp;lt;xsl:value-of select='//my:ETA' /&amp;gt;&amp;lt;br/&amp;gt;&lt;BR&gt;City: &amp;lt;xsl:value-of select='//my:City' /&amp;gt;&amp;lt;br/&amp;gt;&lt;BR&gt;Country: &amp;lt;xsl:value-of select='//my:Country' /&amp;gt;&amp;lt;br/&amp;gt;&lt;BR&gt;Trip Code: &amp;lt;xsl:value-of select='//my:TripCode' /&amp;gt;&amp;lt;br/&amp;gt;&lt;BR&gt;WPR: &amp;lt;xsl:value-of select='//my:WPR' /&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The result is a few properties our of the InfoPath form with &amp;lt;br&amp;gt; tags after each item! Have fun.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=505317" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Relationships between site directory, search, and WSS team sites</title><link>http://blogs.msdn.com/edhild/archive/2005/10/25/484661.aspx</link><pubDate>Tue, 25 Oct 2005 18:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:484661</guid><dc:creator>edhild</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/edhild/comments/484661.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=484661</wfw:commentRss><description>&lt;P&gt;I was asked recently if there was a web part in SharePoint that would display all the team sites&amp;nbsp;where the&amp;nbsp;current user was a member. My immediate push back was what did it mean to be a member? I began&amp;nbsp;down a path&amp;nbsp;investigating the relationship between team sites, the site directory, and search as well as some custom dev for the above web part. I&amp;nbsp;just thought I would record some interesting observations:&lt;/P&gt;
&lt;P&gt;For reasons that I'll explain a bit later, I first wanted to make sure that my WSS team sites were in the search catalog of my SharePoint portal. You should know that I have an environment where there were WSS team sites in a virtual server that was separate from the SPS implementation. This turned out to&amp;nbsp;be a good thing as it opened my eyes to some important details. Almost everyone knows that when you run the "Create Site" link from the Site Directory of a SPS Portal, you get a checkbox to include the site in the site directory as well as a checkbox for&amp;nbsp;the team site to be included in search results. It is IMPORTANT to realize that these are two separate requests. Most of us run as administrators and don't see the approval that is required behind the scenes for both of these actions. I had even a bigger dilemma, my WSS sites were in another virtual server. How could I get these team sites in the search catalog?&lt;/P&gt;
&lt;P&gt;So you might think that you would just add a new content source. You of course would be wrong. If you add the team site as a web site content source, the index search engine wouldn't be aware that it was a WSS site and would not have access to features like being security aware. The trick here is in the admin of the portal, in the search settings and index content portion, there is a link to "manage crawls of site directory". What is quite interesting is that this admin area really has nothing to do the site directory of the SPS portal. This admin area shows you the WSS sites that users have created where the checkbox to include in search results has been selected. From here, I could add my WSS sites in the other virtual server. &lt;/P&gt;
&lt;P&gt;So why did I dive into search. Well to meet the request of displaying all the team sites where a user has access, I could think of 3 different approaches: query the database, enumerate the object model, or use the search catalog. Querying the database would be easy, but I would be opening pandora's box. Who knows what a service pack might do... Plus creating a security aware list would be more difficult. Enumerating the object model would be easy to code and security aware, but execution time would be a problem. Especially if the customer came back and said that they wanted a list that included subsites as well as top-level sites. Using the search catalog gives me a security aware data store (users only get search result items that have access to) that I can query rather quickly. I threw together a QueryTester web part that uses the QueryProvider class to execute any search query I give it (this.Text). Here are some of the highlights of that web part's code:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;using Microsoft.SharePoint;&lt;BR&gt;using Microsoft.SharePoint.Portal;&lt;BR&gt;using Microsoft.SharePoint.Utilities;&lt;BR&gt;using Microsoft.SharePoint.WebPartPages;&lt;BR&gt;using Microsoft.SharePoint.WebControls;&lt;BR&gt;using Microsoft.SharePoint.Portal.Search;&lt;BR&gt;...&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this.Text != String.Empty)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PortalContext context = PortalApplication.GetContext();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query = new QueryProvider(context.SearchApplicationName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataSet results = query.Execute(this.Text);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid = new DataGrid();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.DataSource = results;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.DataBind();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.Controls.Add(grid);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;base.RenderWebPart(output);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So the following query would return the list of all team sites and their subsites that the user has read access to:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SELECT "DAV:contentclass", "DAV:displayname", "DAV:href" &lt;BR&gt;FROM Non_Portal_Content..SCOPE() &lt;BR&gt;WHERE ("DAV:contentclass"='STS_Site' OR "DAV:contentclass"='STS_Web')&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;So now I will have to go back to my SPS Automation article and add code to include the add to search and site directory actions!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=484661" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Secure crawls of Lotus Notes with SharePoint</title><link>http://blogs.msdn.com/edhild/archive/2005/10/12/480395.aspx</link><pubDate>Thu, 13 Oct 2005 06:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:480395</guid><dc:creator>edhild</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edhild/comments/480395.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edhild/commentrss.aspx?PostID=480395</wfw:commentRss><description>&lt;P&gt;I recently had to prove SharePoint's ability to search Lotus Notes databases including honoring security. This meant that a user who did not have access to the Notes database should not see search result items in SharePoint. After having to dig through several how-to guides, knowledge base articles, and hotfixes, I finally got the solution to work and thought that I would post my configuration and include a lot of screen shots that I thought were lacking in other materials.&lt;/P&gt;
&lt;P&gt;&lt;a href="http://blogs.msdn.com/edhild/articles/473060.aspx"&gt;http://blogs.msdn.com/edhild/articles/473060.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=480395" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edhild/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>