Erika Ehrli - Adventures with Office Products & Technologies
MSDN & TechNet: Releasing Office, SharePoint, Exchange & Lync Centers and content for developers and IT professionals.

  • Erika Ehrli - Adventures with Office Products & Technologies

    MSDN Office Developer Center - Behind the Scenes


    We are getting ready for Beta 2 and we have been working hard to produce articles, videos, interviews, code samples, and more content that dives into the details of how-to develop solutions using the 2007 Office System. The past months everything was about what you can do with 2007 Office System, now, we are getting ready to show you how you can do it. Behind the scenes, we have been quietly working with the product teams to provide a great amount of content that will allow you to learn how to develop 2007 Office solutions.

    I find quite fascinating how we all have a different style to learn something new. Some people enjoy a long article (more than 10 pages) with some code that they can possibly reuse in a development project. Some other people enjoy more a short how-to video that they can watch while drinking a coffee. Some other people like to download SDKs and read about every class member inside an object model. Some other people love to see a diagram or poster where you represent an abstract concept. Some other people are fascinated to watch the human being behind the feature/product talking about the cool enhancements of the new version. The same information can be represented from different angles, and we are committed to deliver different content types so that we can satisfy your learning style.

    Another project that has kept us kind of busy is a site redesign project that we started some months ago. The team who developed the current site information architecture did something great at the time when Office 2003 was launched. The world changes and everything needs to evolve from time to time. Since the current version of the site was launched, lots of things have changed. The developer community has grown significantly, the blog boom came, the product teams are out to show their face and talk about their feature, and the developer story for Office has more to offer than any time before. The Office product and technologies family has grown and now they need a bigger house, so we are doing a massive site redesign to organize all the content we have in a better way.

    The following months, you will see how the site starts changing and growing. We have new 2007 Office System content and a site with a better organization that will help you find your way through the search of the content that best fits your learning style.

    For those of you who have been asking if MSDN will continue to publish and highlight the Office 2003 developer story, the answer is YES. We are quite excited about the new 2007 Office System, but we know that there are lots of developers who want to continue learning about the development possibilities offered by Office 2003.

    I would love to open a document that I have in my desktop and share with you the great list of content that we will publish after Beta 2, but for now, the only thing I can share with you is some content that we got published ahead of time and that we will headline on MSDN shortly.

    We have been working close to MSDN TV to publish a set of Office shows that provide you with good insight and pointers to developer opportunities with 2007 Office System. So for those of you who love to see Mike Fitz and Clint Covington in action, we have something for you.

    Introduction to Upcoming SharePoint Products and Technologies Mike Fitzmaurice gives an overview of upcoming SharePoint products and technologies.
    Mike Fitzmaurice gives an overview of the technologies that will release within Microsoft Windows SharePoint Services (version 3) and Microsoft Office SharePoint Server 2007, with an eye toward pointing out areas with specific developer opportunities.
    Microsoft Office Access 2007: Rich Client Solutions Clint Covington discusses improvements and new features in Access 2007.
    Clint Covington discusses Access 2007, which is redesigned with improvements for information workers, developers and IT Pros. See the new WYSIWYG design experience and interactive report browse view and learn how you can use Access as a rich client for Windows SharePoint Services v3 and Office Live.


  • Erika Ehrli - Adventures with Office Products & Technologies

    Getting ready for the Microsoft Office System Developers Conference 2006


    The Microsoft Office System Developers Conference 2006 will be held in Redmond, WA next week; so expect to see more buzz related to the 2007 Office System in blogs.

    Office has evolved a lot as a development platform and the best part is that you will be able to watch it with your own eyes. No matter where you are, you can watch and listen to Bill Gates and Kurt DelBene showing investments done to Office programs, servers, services, and tools.  Bill and Kurt will deliver keynotes next week that you should not miss, so here is all the information that you need to get ready:

    Start Time: Tuesday, March 21, 2006 9:00 AM (GMT-08:00) Pacific Time (US & Canada) 
    End Time:   Tuesday, March 21, 2006 11:00 AM (GMT-08:00) Pacific Time (US & Canada) 

    How can I sign-up for the Live MSDN Webcast?
    Go to: and register.

    This keynotes are for developers, so don’t miss the opportunity to learn about new development opportunities and potential ideas to build tools and business solutions using the 2007 Office System.

    Another hint, some great cool “things” will be announced next week, so stay in touch...

  • Erika Ehrli - Adventures with Office Products & Technologies

    Project and Project Server resources for developers


    I have the honor of sharing an office with Jim Corbin, who is the programmer writer for Project. Jim is the guy responsible for writing developer oriented documentation, articles, and the SDK for Project. So as you can imagine, he has great knowledge, expertise, and experience with everything related to Project and Project Server.

    One of the advantages of sharing an office with Jim is that I get to learn a lot from him about what's coming for Project Server. Another great advantage is that Project PMs and developers come often to discuss about new features and cool enhancements related to  Project and/or Project Server and I am lucky to overhear their discussions (I know I should mind my own business, but sometimes, I just can't help it).

    So yesterday, the Evil Doctor PorkChop (Treb Gatte - Project Server Program Manager) came to visit Jim and we all ended up taking about Project blogs and books. So here I am passing up the word of great blogs and books about Project Server that Treb and Jim recommend:

    Microsoft Project bloggers:

    If you want to learn more about Project and what's new for developers in Project 2007 and Project Server 2007, be sure to visit the following blogs:

    External Project bloggers and Web sites:

    Treb Gatte compiled a list of great Project blogs that you should not miss:

    • MPA blog: Bill Raymond, Microsoft Office Project MVP.
    • Do More Than Manage: Gord Schmidt's site on Project Server technical aspects.
    • Mark Schneider: Project Server Training and Implementation
    • Jack Dahlgren's blog: Project Management, Software, Training...
    • Project Server Experts: Gary Chefetz & Dale Howard's site.
    • Scott Wagner: Microsoft Project 2003 and MS Project Server 2003 along with items on SharePoint, SQL Server, Analysis Services and OLAP for use in the MS Enterprise Project Management Solution.
    • Faisal Masood: FM's Blog on Microsoft Project Server & Microsoft Project.

    Great books about Project Server:

    These books were recommended by the Treb and Jim as great books in the market for Project Server:

    Managing Enterprise Projects Using Microsoft Office Project Server 2003
    by Gary L. Chefetz, Dale A. Howard
    Administering an Enterprise PMO using Microsoft Office Project Server 2003
    by Gary L. Chefetz, Dale A. Howard

    Don't forget to visit the Microsoft Office Project 2003 Developer Center  to find technical articles, reference documentation, downloads, solution starters, code samples, multimedia and more resources related with Project.

    Thanks a lot to Jim and Treb for allowing me to dive into their conversation and for sharing these useful resources.

  • Erika Ehrli - Adventures with Office Products & Technologies

    Office 2007 and SharePoint PDC recorded sessions


    Some time ago I shared a pointer to the Office & SharePoint PDC '05 slide decks. I just got in my Inbox a pointer to the PDC '05 recorded sessions and I just wanted to share the pointer with all of you in case you didn't know about them:

    Slide decks are quite informative, but it's never the same compared to the opportunity of watching the speaker in action talking about a feature/product and of course, you get to see more than a slide that says : Demo.

    This recorded sessions are public. However, they won't be live for much longer, so you'd better hurry up and have fun watching some of these sessions.

    I hope you like 'em.


  • Erika Ehrli - Adventures with Office Products & Technologies

    MS + Office + Channel 9: Meet the guys, learn about new features, and have a good laugh


    The Channel 9 team has defined a new level of communication between Microsoft and developers and one of the most popular content items offered on this space are video interviews. The interesting thing about these videos is that they allow us to see the human being behind the technology and learn more about the possibilities offered by a product or feature.

    The video interviews are done to different Microsoft personalities in a casual way described by Scoble as "peer-to-peer over a beer." Once the interview is recorded, the Channel 9 team publishes and developers are able to comment and ask questions related to the interview through a forum. These videos are state-of-the-art for self training, it only takes you some minutes to learn something new, and by the way, they are hilarious.

    The Channel 9 team has done some video interviews related with 2007 Microsoft® Office system (Office "12") that you should not miss:

    We are working together to offer more videos related with Office development. I think it's an interesting opportunity to meet all the great people that have been working with Office and to learn more about the cool things you will be able to implement thanks to the 2007 Microsoft® Office system.

  • Erika Ehrli - Adventures with Office Products & Technologies

    The official name: 2007 Microsoft® Office system


    Finally, I am able to spell the real name for the next version of Office: 2007 Microsoft® Office system.

    For those of you who have not seen the press passes and want to catch-up here is a list with some of them:

    See the 2007 Microsoft Office System Pricing and the 2007 Microsoft Office System Packaging.

    Maybe you have heard that this is the biggest release of the decade, and I can tell you that this version of Office has great potential as a development platform. Lots of features/enhancements were announced on Beta 1 and for Beta 2 there are more cool surprises waiting to be announced.

    My latest experiment with 2007 Microsoft® Office :) is exporting an ASP.NET 2.0 GridView to Excel 2007. If you use the following code snippet, you will be able to export the content of a SqlDataSource (used to DataBind a GridView) to Excel (without automation):

       protected void ExportToExcel() {
    Response.Buffer = true;
    Response.ContentType "application/";
    Response.Charset "";
    .EnableViewState = false;

    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

    GridView grid = new GridView();
    grid.DataSource SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    grid.AutoGenerateColumns = true;


    We built a Web based application for MSDN content management, and we export reports to Excel 2003 using the previous snippet of code. One thing that we don't like is that we lose all formatting, so we have the data, but then we have to make it pretty again.

    I ran the same process on a machine where I have the last build of 2007 Microsoft® Office and Excel 2007 is smart enough to keep my formatting. Another cool enhancement. For those of you who have Beta 1, please give it a try.

  • Erika Ehrli - Adventures with Office Products & Technologies

    How to: Generate autonumbered lists using WordML (2003)


    I was reading today an internal distribution list and I saw an interesting thread about autonumbered lists using WordML (2003):

    "I embarked on a journey to try and transform InfoPath rich text (xhtml) to WordML. I encounter a problem when I try to transform a rich text node that contains multiple numbered lists: in the rich text they both number from 1-3, but in Word the result is 1,2,3 and 4,5,6."

    Zander Westendarp provides a great workaround: If you increment the value of the w:listDefId elements for each element, you can get autonumbered lists that always restart the numbering.

    When I work with WordML or SpreadsheetML, I always build a template of the document/spreadsheet that I want to generate and save it as XML. It's the best way to get started with the code that you want to generate. I made an experiment to test this approach and explore the resulting WordML. Follow these simple steps...

    1. Start Microsoft Word 2003.
    2. Create a document with two sets of numbered lists as shown in Figure 1:

      Figure 1. Create two sets of autonumbered lists

    3. On the File menu, click Save As.
    4. In the Save as type list, select the XML Document (*.xml) option.
    5. In the File name box, type a new name for the document.
    6. Click Save.

    Once you create the XML Document file, you can open the file using a text editor program to explore the content of the file. Find all the w:listDef elements and you will see how the w:listDefId attribute is always incremented.

    Tip: If you want to see a nice and readable indented XML file, see this blog entry.

    I know that WordML is a big topic and every document is a separate story. Newsgroups, forums, and DLs are always full of different questions. Taking about lists is just a single topic - that by the way is huge and complex by itself. Fortunately there are documents, articles, books, and cool bloggers who share their knowledge.

    Here are some WordML resources that I use when I am stuck with WordML:

    1. Overview of WordprocessingML.
    2. XML Schema Reference
    3. Office 2003 XML
    4. Office 2003 XML for Power Users
    5. Powering Office 2003 with Office XML
    6. XML in Office 2003: Information Sharing with Desktop XML 

    If you want to learn more about lists and WordML, read Oleg Tkachenko's blog entry: Generating WordprocessingML using XSLT: Lists. Also read John Durant's blog entry: WordProcessingML, XML, and Lists.

    Finally, to learn WordML, divide and conquer, that's my strategy...

  • Erika Ehrli - Adventures with Office Products & Technologies

    Visio Connector for Project/EPM/SPS


    You should check this out! Imtiyaz Mubarak (a developer, Microsoft Parter, and friend from India) along with Chris Castillo from the Visio team created and published a component that provides a Visio Add-In and a Project Add-In that integrates Visio 2003, Project Server and MS SharePoint Server. This component allows you to:

    • Generate Project Plans from the Visio Process Flow  Diagrams.
    • Generate Project Plans from WBS.
    • Generate SharePoint Tasks from the Visio Process Flow Diagrams.
    • Report the Status of the tasks from Microsoft Project Plan stored locally or in a Project Server.
    • Report the Status of the tasks from Microsoft SharePoint Portal Server.
    • Generate a Portfolio View in Visio from Microsoft Project Server.
    • Generate Visio Process Flow Diagram from MS Project Plan through MS Project Add-Ins.

    This component is published in GotDotNet and it’s really cool. This is the kind of stuff that solves business needs and I love that it integrates different Office technologies. I am sharing with you the link where you can download the solution along with source code and a document that explains the architecture and code.

     This is good stuff!

  • Erika Ehrli - Adventures with Office Products & Technologies

    How to subcribe to Office "12" Beta 2 Program


    I have been receiving some emails from developers who can't wait to start playing around with Office "12" and that want to know how to enroll to the Beta 2 program. I don't manage the program, but I just talked with someone from the Office "12" Partner Readiness Team and here's what you have to do:

    For Beta 1:

    Office 12 Beta 1 is a limited, non-public beta for partners who have achieved the Information Worker Solutions Competency status. You can learn more about the Information Worker Solutions Competency by visiting

    For Beta 2:

    To register for Office “12” Beta 2, available later this spring, please go to and click the “register now” link at the top of the page.

    I encourage you to register and start experimenting with Office "12". I have been playing around with Office "12" for some time and every day I get surprised while I discover new features.

    Today I was working with Excel "12" and I made some demo graphics that present some MSDN traffic results.  I really like the professional and cool look that you can get when you are building charts and they are quite easy to customize.

    So if you want to start playing around with Office "12" too, follow the previous instructions and I am sure you will have a blast!

  • Erika Ehrli - Adventures with Office Products & Technologies

    Looking for C# and VB code samples?


    Look what I just found: 101 Visual Basic and C# Code Samples. The www has lots of great things out there and sometimes we can't know about all of them. I have ended finding many good code samples by accident and I am always happy to find them; it's almost as good as when you find money in the pocket of a jacket you haven't used in a while.

    An interesting thing of developing Office applications using managed code is that you always need knowledge of how to work with multiple .NET assemblies to accomplish different tasks. Even if you are a great developer and already know a bunch of classes, it always comes handy to learn best practices. Here is a list of some code samples you can find in there:

    1. Advanced .NET Framework (Localization) - Work with Resource Files
    2. File - How-To File System
    3. Framework - Creating an Enterprise Services Component
    4. Framework - How-To Configuration Settings
    5. Framework - How-To Work with XML
    6. Framework - Understanding the Garbage Collector
    7. NET Framework - How-To Send Mail
    8. Web Services - Consume a Web Service
    9. Windows Forms - How-To Automate Office
    10. Windows Forms - Use Regular Expressions

    ...and more, in fact 101 great code samples that are good to keep in your jacket's pocket.

  • Erika Ehrli - Adventures with Office Products & Technologies

    Office "12" bloggers list


    To view the list of Office "12" bloggers from my previous blog entry you must have Microsoft® Internet Explorer 5.01 Service Pack 2 (SP2) or later and the Microsoft Office 2003 Web Components.

    For those of you that have a different browser here's the list:

    Topic Owner Name URL RSS feed
    Access 12 Erik Rucker A discussion of what's new in Access 12
    Document Services (ECM) Rob Lefferts Office SharePoint Document Services (ECM)
    Excel 12 Dave Gainer Microsoft Excel 12
    FrontPage 12 Rob Mauceri Rob Mauceri's FrontPage Blog
    Groove Mark Olson Marc's blog about the integration of Groove into Office 12.
    InfoPath 12 Tudor Toma InfoPath 12 - Tudor Toma
    Office 12 (General) Erika Ehrli Adventures in Office Development and .NET
    Office 12 (General) John Durant Office and a short, bald man
    Office 12 (General) Steven Sinofsky Steven Sinofsky's Microsoft TechTalk
    Office 12 Help Mike Kelly From my Office to Yours
    Office 12 New User Interface Jensen Harris Jensen Harris  An Office User Interface Blog
    Office 12 New XML File Format Brian Jones Brian Jones  Office XML Formats
    OneNote 12 Chris Pratley Chris Pratley's OneNote Blog
    OneNote 12 Owen Braun Owen Braun  OneNote 12
    Outlook 12 Melissa MacBeth Tasks and Time Management in Outlook
    Outlook 12 Michael Affronti michael affronti | microsoft outlook program manager
    Outlook 12 Will Kennedy Outlook 12
    Outlook 12 Extensibility Ryan Gregg Ryan's Look at Outlook Programmability
    PDF Support in Office 12 Cyndy Wessling Save as PDF in Office "12"
    Presentation and Graphics Brendan Busch Brendan Busch's blog on PowerPoint 12
    Project 12 Dieter Zirkler Dieter's ProjBlog
    Publisher 12 Jeff Bell On Microsoft Publisher and more
    SharePoint Products and Technologies Mike Fitz SharePoint Products and Technologies
    SharePoint Products and Technologies SharePoint Team A blog from the SharePoint Development Team
    SharePoint Products and Technologies WCM Team Web Content Management in Office "12"
    Visio 12 Eric Rockey What's new in Visio 12
    VSTO VSTO Team Microsoft Visual Studio 2005 Tools for the Microsoft Office System
    Windows Sharepoint Services PJ Hough Windows Sharepoint Services etc
    Word 12 Joe Friend Joe Friend  Microsoft Office Word
    XPS and Windows Digital Documents Andy Simonds My blog (Andy, GPM in Windows) about XPS and the Windows Digital Documents Team.

  • Erika Ehrli - Adventures with Office Products & Technologies

    Excel Services and Office "12" bloggers list

    I have been playing around with Office "12" and SharePoint "v3" and I am quite surprised of how easy it is to view and interact with Excel Spreadsheets in a browser thanks to Excel Services. I needed to build a site and share with my team our content plans for Office "12." I had an Excel file that I wanted to share so I added an Excel Web Access web part that allows my peers to interact with an Excel 12 Workbook as a Web page. This is way much better than sending around my file by email!

    If you have the time, you can build a Web site to display an Excel Spreadsheet. The following are six different approaches you could use to display an Excel Spreadsheet (or at least its contents) on a Web page:
    1. Web page 1: Save your Excel Spreadsheet as an html file and add an html IFrame to a Web page to embed your Spreadsheet. This option requires Office Web Components.
    2. Web page 2: Use ADO and the Microsoft Excel Driver.
    3. Web page 3: You could also databind your Excel Spreadsheet to an ASP.NET datagrid to display the content of your Spreadsheet as a table.
    4. Web page 4: Copy and paste your Excel Spreadsheet to Visual Studio and it will be rendered as an HTML table. To simple and you will lose functionality such as sorting and filtering).
    5. Web page 5: Buy a third-party component that will build web pages for you, such as SpreadsheetGear.
    6. Web page 6: Use an ActiveX control such as DSO Framer Control Object to host Excel inside your Web page.

    If you were using a SharePoint site, you would also need to build a web part that displays any Web page 1, 2, 3, 4, 5 or 6 and this would take you longer. Using Excel Services, it took me less than a minute to add and configure a web part that displays an Excel Spreadsheet.

    If you want to learn more about Excel Services, don't miss the opportunity to read David Gainer's blog. By the way, one of the Excel Spreadsheets that I wanted to share with my team is a growing list of Office "12" bloggers. I wish I could show you all a running Excel Services web part. I can't run Excel Services in my blog so I went for the Web page 1 approach to share with you my Office "12" bloggers list.



  • Erika Ehrli - Adventures with Office Products & Technologies

    Office "12" supports "Save As PDF" programmatically


    As a developer, I was quite excited to learn that Office "12" will allow you to save documents as PDF/XPS. Since that moment, I have been quite surprised to see excitement around that feature. I am now happy to learn more about XPS. You should read Jeff Bell's blog and Andy Simonds's blog to learn more about this.

    For those of you who have been asking through my blog and email if this functionality (Save As PDF) is going to be exposed in the API the answer is YES! Office PIAs will have methods that expose this functionality. The details and sample code will be available after we ship Beta 2.

  • Erika Ehrli - Adventures with Office Products & Technologies

    Get a sneak peek at Windows Vista and Microsoft Office "12"


    If you want to learn more about Windows Vista and Microsoft Office "12", you can enroll to the ISV Touchdown Briefings for Windows Vista and Microsoft Office "12."

    ISV TouchdownBriefings Microsoft Visual Studio 2005

    The Office "12" preview includes the following:

    • The new UI extensibility model which includes: Application-centric task panes, add-in development, and Ribbon UI extensibility features.
    • The Microsoft Office System open XML File Format, which allows for manipulation of files, creating files without using the individual programs, repurposing content, and merging files with business data.
    • New Investments in Server-Side Components with Office "12": Excel Services, InfoPath Forms Server, and the enhanced capabilities of Share Point Portal Server v3 Office "12" will provide applications with server-based infrastructure for data calculation, common workspaces, and document lifecycle management.


  • Erika Ehrli - Adventures with Office Products & Technologies

    Happy new Office "12" year!


    I have given my blog a long winter vacation and here I am back and quite excited to start writing more news related with Office "12." This is going to be a great year for Microsoft with Windows Vista and Office "12" being shipped; everybody here at Microsoft is starting this year full on energy, enthusiasm, and hard work for all of you.

    I am currently working on the content plan for MSDN and Office "12" and the current wish list that I am building contains a proposed set of technical articles, columns, quickstarts, recommended books, white papers, code samples, screen casts, and product team video interviews (we are working close to Channel 9 to produce great videos that are valuable for Office developers). We are defining specific content items for each of the following products and features:

    • Access "12"
    • Excel "12"
    • InfoPath "12"
    • OneNote "12"
    • Outlook "12"
    • PowerPoint "12"
    • Project "12"
    • Visio "12"
    • Project Server "12"
    • SharePoint and Windows SharePoint Services "v3"
    • Ribbon UI Extensibility
    • Custom Task Panes
    • Managed COM add-ins
    • Office "12" Open XML Formats
    • XML in Office

    and more...

    If you have been reading Office "12" blogs (Brian Jones, Jensen HarrisDavid Gainer, Jeff Bell, and Brendan Busch have extraordinary Office "12"  blogs), you are enrolled to Office "12" Beta program (if you want to register go here), or you are just interested in what's new for developers in Office "12" and SharePoint, and if you have recommendations of articles, code samples, interviews or anything that you think is a must have for Office developers, please let me know. Write your own wish list and feel free to let us know what you and/or your customer would love to see and keep visiting this site to learn more about what's coming for Office "12."

    I wish you all a great 2006 year full of happiness, health, work, and good things.

    Have fun!

  • Erika Ehrli - Adventures with Office Products & Technologies

    Generating Active Directory Diagrams with Visio 2003 and Visual Studio .NET 2003


    Last week we published a new Office Talk column: Generating Active Directory Diagrams with Visio 2003 and Visual Studio .NET 2003. I am very happy about this and I have to say that I had a lot of fun writing this article and code.

    Everything started back in September at PDC when I met with a customer who asked how to build custom Active Directory Diagrams with Visio 2003. We talked about the possibilities and in general I explained how he could build an Active Directory diagram. Active Directory is one of my favorite topics :). When I came back to Redmond I met with my friend and peer Saul Candib, who is the programmer writer for Visio. We talked about the scenario and we decided to work together to build a code sample and a technical article that would help Office developers to learn how to:

    1. Connect and query an Active Directory from managed applications.
    2. Understand the fascinating ways in which you can use the Visio PIAs to create all sorts of custom visual solutions.
    3. How to build a Visio 2003 Add-in that generates a custom Active Directory Visio drawing.
    Sample Active Directory user diagram generated in Visio

    One important note for developers who are already working with Visual Studio 2005. The Visio 2003 SDK Add-in/Add-on wizard was designed for Visual Studio 2003, and that approach will not work with Visual Studio 2005. However, you can build a Shared Add-in (instead of using the Visio 2003 SDK Add-in/Add-on wizard) and everything will work just fine. Bill Morein, who is a Program Manager for Visio wrote this interesting blog entry where he explains how to create Visio COM Add-ins with Visual Studio 2005.

    I hope that you enjoy this article and find it useful if you are one of those developers who are currently looking for options to build custom Visio 2003 solutions. I can say that Saul and I were really happy to put this together and we would be quite pleased to know if you liked it :-).

    Have a peek and enjoy!

  • Erika Ehrli - Adventures with Office Products & Technologies

    Extracting Microsoft Office Application Properties without automation


    Every file created by a Microsoft Office application supports a set of built-in document properties. In addition, you can add your own custom properties to an Office document either manually or through code. You can use document properties to create, maintain, and track information about an Office document such as when it was created, who the author is, where it is stored, and so on. To get or set the properties you can use automation to extract the Microsoft Office application properties.

    Take a look at the following links for samples:;EN-US;Q303296&

    But what happens if you are working with a Web-based application and you want to avoid the use of automation in a Web server…

    I found a nice workaround to extract Office document properties without using automation. You can use the Dsofile, an in-process ActiveX component that allows you to read and to edit the OLE document properties that are associated with Microsoft Office files, such as the following:
    • Microsoft Excel workbooks
    • Microsoft PowerPoint presentations
    • Microsoft Word documents
    • Microsoft Project projects
    • Microsoft Visio drawings
    • Other files without those Office products installed

    If you are working with a managed application follow the next steps:

    1. Download and install the DSO File control.
    2. Add a reference to InteropDSOfile.dll to your managed Web application.
    3. Create a new Web form and copy the following code.
      <%@ Page Language="C#" %>

      <script runat="server">
      protected void btnLoadFile_Click(object sender, EventArgs e)
      // Define a path to save the file in the server
      string serverTempFilePath Server.MapPath(@"/yourpath/" + FileUpload1.FileName);

      // Create the DSOFile document
      DSOFile.OleDocumentPropertiesClass oleDocument = new DSOFile.OleDocumentPropertiesClass();
      DSOFile.SummaryProperties summaryProperties;


      // Extract the properties
      summaryProperties oleDocument.SummaryProperties;
      tbTitle.Text summaryProperties.Title;
      tbAuthors.Text summaryProperties.Author;
      tbCompany.Text summaryProperties.Company;
      tbNumPages.Text summaryProperties.PageCount.ToString();
      tbWordCount.Text summaryProperties.WordCount.ToString();

      // Close the DSOFile.OleDocumentPropertiesClass

      <html xmlns="">
      <head runat="server">
      <form id="form1" runat="server">
      </strong><br />
      br />
      table border="1">
      <td valign="top">
                              File upload:
      <asp:FileUpload ID="FileUpload1" runat="server" />
      asp:Button ID="btnLoadFile" runat="server" OnClick="btnLoadFile_Click" Text="Load File Properties" /><br />
      <asp:TextBox ID="tbTitle" runat="server"></asp:TextBox> 
      <asp:TextBox ID="tbAuthors" runat="server"></asp:TextBox> 
      <asp:TextBox ID="tbCompany" runat="server"></asp:TextBox> 
                              Number of Pages:
      <asp:TextBox ID="tbNumPages" runat="server"></asp:TextBox></td>
                              Word count:
      <asp:TextBox ID="tbWordCount" runat="server"></asp:TextBox> 

    4. If you run the previous Web form you will get something like this:

    You can also extract custom properties using the DSOFile control.

    Have a peek and enjoy!

  • Erika Ehrli - Adventures with Office Products & Technologies

    How to indent an XML file or document


    Office has a deeper integration with XML technology and developers are always looking for tips and tricks to work with XML documents. Office provides support to work with XML and you might be one of those developers that is programmatically generating Word documents (using WordprocessingML) , Excel spreadsheets (using SpreadsheetML), PowerPoint slides (using PresentationML), or Visio diagrams using (DataDiagrammingML). I think it always comes handy to have a list of tips and tricks to work with XML, and today I will share with you three simple ways of indenting an XML file/document.

    Indenting XML files might sound as one of those netpick or nice-to-have enhancements that you don’t really need when you are working with XML. However, lots of applications and tools generate programmatically XML files and it always comes handy to open a nice and readable indented XML file instead of a “how can I edit this!” single line of eternal XML elements.

    For managed applications:

    • If you are generating XML files using and XmlTextWriter, you just need to do the following:

      Dim writer as XmlTextWriter = new XmlTextWriter("data.xml",nothing)

      XmlTextWriter writer = new XmlTextWriter("data.xml",null);
      writer.Formatting Formatting.Indented;
    • If you are generating XML files/documents using DOM (XmlDocument) , you can add an XmlTextWriter to indent the code and you will be done:

      Dim doc as XmlDocument = new XmlDocument()
      ' Save the document to a file and auto-indent the output.
      Dim writer as XmlTextWriter = new XmlTextWriter("data.xml",nothing)

      XmlDocument doc = new XmlDocument();
      // Save the document to a file and auto-indent the output.
      XmlTextWriter writer = new XmlTextWriter("data.xml",null);
      writer.Formatting Formatting.Indented;

    For any platform:

    • If you are generating XML files using an XSL transform file, you just need to add a simple line to your XSL file.

      <?xml version="1.0"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="">
      <xsl:output method="xml" omit-xml-declaration="no" indent="yes" encoding="US-ASCII"/>

    Happy Office XML programming!

  • Erika Ehrli - Adventures with Office Products & Technologies

    Visual Studio 2005 Launch and my favorite features


    Today is a great day for Microsoft: Visual Studio 2005, SQL Server 2005, and Biztalk were launched. I want to share with you the list of my favorite Visual Studio 2005 features and some pointers to articles, videos, code samples, and sites where you can find further information:

    1. Visual Studio Tools for Office: You can extend Office applications and create custom business solutions using Visual Studio Tools for Office (VSTO 2005). I have been playing with VSTO and I find fascinating how you can drag-and-drop Windows forms controls to Excel Worksheets and Word documents. You can later add some code-behind business logic and connectivity to data. I also find fascinating that you can create custom Outlook solutions thanks to the support provided by VSTO for building application-level add-ins using managed code with Outlook. I strongly recommend you to read a great article written by Janet Robinson: What’s new in Visual Studio 2005 Tools for Office. You should also see the redesigned Visual Studio Tools for Office Developer Portal at the Office Developer Center.
    2. ASP.NET 2.0: I am very excited about this technology. I have been working with ASP.NET 2.0 all this year and I find fascinating how you can create Web-based applications in such an easy way and in less time than you can imagine. There are lots of enhancements and features that I can talk about, but I recommend you to play around with MasterPages, Themes, and Skins to create the look-and-feel or your sites. Experiment with DataSource controls to see how easy it is to bind data to your server controls without writing code related with ADO.NET read about the Web part framework, you will be able to create custom Web parts and export them to SharePoint. Also, the next version of SharePoint uses a lot of   ASP.NET 2.0 features, so if you are a SharePoint developer, start learning ASP.NET 2.0. Check out this Visual Web developer training videos series.
    3. Class Designer: I was really excited when I saw this. I used to generate UML Class diagrams using the Reverse Engineering feature that shipped with Everett. I was happy then, but you should see this new Class Diagrams, they are perfect. I like that you can create them really fast and with little customization, it's a great way to work with your Object Models and you can save them as images and add them to your documentation.
    4. Intellisense: There are so many assemblies now that you can’t possibly remember all the interfaces, classes, and then properties, methods, events, and more. I love that code files, even Web forms have Intellisense now.
    5. Visual Data Designer: You can connect to your SQL Server database and create tables, relationships, views, and stored procedures in less time and using the same environment where you write your application code. I love that you can drag-and-drop a table from the Visual Data Designer to a form and then Visual Studio 2005 creates for you a GridView and a SQLDataSource connection that allow you to select, insert, delete, and update data to the table. You don’t even need to know ADO.NET to connect your managed applications to a data store. Try it!
    6. Code snippets: You might need to reuse code over and over, so now you can store it inside Visual Studio and forget about looking for old code in hard drives and CDs. I love this!
    7. Debugging: The debugging experience is way much better. When you are debugging you can mouse over an object and you will see a context window with all the information related to the object without typing commands in the Command Window. You can even see the details of exceptions.

    Watch this video:

    You can find more videos here: Absolute Beginner’s Video Series

    I know that when someone from Microsoft states that a product is good, it sounds like marketing. But I have to tell you that I am being honest and talking only as a developer that is quite excited to experience and work with Visual Studio 2005. The best you can do is to give it a try.



  • Erika Ehrli - Adventures with Office Products & Technologies

    How to: Uploading a File to a SharePoint Library Site from a Local Folder


    I am currently developing an application that will help my team (Office Developer Documents) to manage all the metadata associated with the publishing process in MSDN. The name of the tool is Rawhide and it’s a Web-based application. I am really excited of developing this tool because I am working with Whidbey, ASP.NET 2.0, SQL Server, Windows Sharepoint Services, and a cool set Office development features. Soon I will start adding Office “12” enhancements such as Excel Services and Windows Sharepoint Services “v3”. I can’t wait!

    I am learning a lot from my peers about how interesting it is to publish content in MSDN and I hope this tool will improve our working experience and become a great source of code snippets that I can share with the community.

    Today I was reading the newsgroups and I was looking at lots of posts where developers are looking for code that will help to upload programmatically files to a SharePoint library. I was surprised to see that there are lots of developers struggling with this issue. I am too :). One of Rawhide’s features is to submit our articles, code samples, and art to a SharePoint Library.

    I found two great articles that are helping me out to accomplish my mission. I know there are many ways of doing that, but this is the recommended one by Microsoft and I love it because it has just what I needed and it has code in C# and VB.NET:

    Uploading a File to a SharePoint Site from a Local Folder

    I also found this page that has all the information I need to work with the SPFileClass.

    And finally, I found this interesting blog entry at Bill Simser’s blog where he talks about the Syncronization of Office Document Properties with WSS Document Libraries. I haven't tested this yet, but apparently, if you create the following properties in a Sharepoint library or list:

    Hyperlink base

    "The MS/Office documents that are upload inherit such corresponding custom MS/Office properties : "


    As soon as I complete my "upload files to SharePoint" features in Rawhide, I will keep you posted with the outcome.

  • Erika Ehrli - Adventures with Office Products & Technologies

    Microsoft announces Windows Live™ and Microsoft® Office Live


    Technology and the Internet created an information revolution that has changed our lives. Today, Bill Gates announced a new set of internet-based services that change the delivery and business models for software. Microsoft has been quite successful with X-Box live and I can tell you that I have seen that having a “live” game completely modifies the experience. So I find quite exciting that Windows Live™ and Microsoft® Office Live were announced.

    Windows Live™ is a set of personal Internet-based services and software that you can subscribe to get the information and resources that YOU want, for example email, messenger, your favorites, and more. What is the advantage? For example, you no longer will need to transfer your favorites (I hate that) from machine to machine.  Subscribe and take a look at some Windows Live services here:

    Microsoft® Office Live is a new set of Internet-based services and software that will allow people and organizations to subscribe to specific services that integrate with Microsoft Office programs including Microsoft Outlook®, Microsoft Excel®, Microsoft Office Live Meeting and Microsoft Office Small Business Edition. Subscribe and take a look at some Microsoft® Office Live services here:

    Office Live has different offerings:

    • Office Live Basics: “To help small businesses to establish an online Internet presence including a domain name, a Web site with 30 MB of storage, and five Web e-mail accounts at no charge through an advertising-supported model.”
    • Set of subscription-based services: “To provide more than 20 business applications to help automate daily business tasks such as project management, sales and collateral management, customer management, expense reports, time and billing management, and secure internal and external collaboration. Built on Windows SharePoint® Services, these applications can be customized and extended to specific customer needs by an extensive Microsoft partner ecosystem.”

    So depending on your needs you can choose the best services and over time, both Windows Live and Office Live services will expand and provide new services that you can subscribe to.

  • Erika Ehrli - Adventures with Office Products & Technologies

    How to programmatically generate Microsoft Excel AutoFiltered Lists with C#


    One of my favorite features in Microsoft Excel is AutoFilter. I love to manage lists of data in Excel where I can organize, sort, and filter my information in different columns.

    Filtering is a quick and easy way to find and work with a subset of data in a range. A filtered range displays only the rows that meet custom filter criteria defined in a search query or fitler specified for a column. Microsoft Excel provides two commands for filtering ranges: AutoFilter and Advanced Filter. Unlike sorting, filtering does not rearrange a range. Filtering temporarily hides rows you do not want displayed. When Excel filters rows, you can edit, format, chart, and print your range subset without rearranging or moving it. You can learn more about autofiltering here: All About AutoFilter.

    The best part is that you can programatically generate autofiltered lists from your managed applications thanks to the extensibility offered by the Microsoft Excel Primary Interop Assembly. You can use the Range.AutoFilter method to filter a list using AutoFilter. The following code sample (C# Console Application) generates an autofiltered list of all the directories and files that belong to given directory path. You can modify the code and send any path that you need.

    namespace ErikaEc.OfficeTools.Excel
    using System;
    Excel Microsoft.Office.Interop.Excel;

    DemoExcelAutoFiltering {
    static void Main(string[] args) {
                DirectoryInfo di 
    = new DirectoryInfo(@"C:\Program Files\Microsoft Office\OFFICE11\1033");
    ExcelFileReport efr = new ExcelFileReport(di);

    public class ExcelFileReport {
    private object _missing;
    Excel.Workbook _book;
    Excel.Worksheet _sheet;
    Excel.Range _rng;
    DirectoryInfo _di;
    ExcelHelper _eh = new ExcelHelper();

    ExcelFileReport(DirectoryInfo di) {
    _missing System.Reflection.Missing.Value;
    _row 4;

    public void DocumentDirectory(DirectoryInfo di) {
    foreach (DirectoryInfo d in di.GetDirectories()) {
    foreach (FileInfo f in di.GetFiles()) {
    _rng (Excel.Range)_sheet.Cells[_row, "A"];
    _rng.Value2 di.Name;
    _rng (Excel.Range)_sheet.Cells[_row, "B"];
    _rng.Value2 f.FullName;
    _rng (Excel.Range)_sheet.Cells[_row, "C"];
    _rng.Value2 f.Name;
    _rng (Excel.Range)_sheet.Cells[_row, "D"];
    _rng.Value2 f.Length;
    _rng (Excel.Range)_sheet.Cells[_row, "E"];
    _rng.Value2 f.Extension;
    _rng (Excel.Range)_sheet.Cells[_row, "F"];
    _rng.Value2 f.LastWriteTime.ToLongDateString();
    public void Generate(){
    string caption "File Analysis Results";
    heading1 "File Analysis Report for Folder " + _di.FullName;
    _book _eh.Create(caption, heading1);
    _sheet ((Excel.Worksheet)_book.ActiveSheet);

    private void SetAutoFilter(){
    string lastrow "F" + _row.ToString();
    _rng ((Excel.Worksheet)_book.ActiveSheet).get_Range("A4", lastrow);
    _rng.AutoFilter(1, _missing, Excel.XlAutoFilterOperator.xlAnd, _missing, true);
    _rng.Borders.LineStyle Excel.XlLineStyle.xlContinuous;
    public void WriteTableHeader(){
    _rng.Font.Bold = true;
    _rng.EntireRow.Font.Bold = true;

    _rng (Excel.Range)_sheet.Cells[_row, "A"];
    _rng.Value2 "Parent Directory";
    _rng (Excel.Range)_sheet.Cells[_row, "B"];
    _rng.Value2 "Full Path";
    _rng (Excel.Range)_sheet.Cells[_row, "C"];
    _rng.Value2 "File Name";
    _rng (Excel.Range)_sheet.Cells[_row, "D"];
    _rng.Value2 "Size";
    _rng (Excel.Range)_sheet.Cells[_row, "E"];
    _rng.Value2 "Type";
    _rng (Excel.Range)_sheet.Cells[_row, "F"];
    _rng.Value2 "Last Modified";

    _sheet.Columns.ColumnWidth 30;

    class ExcelHelper {
    private Excel.Application _excelApplication;
    ExcelHelper() {
    = new Excel.Application();

    public Excel.Workbook Create(string caption, string heading1) {
    try {
    _excelApplication.ScreenUpdating = false;
    _excelApplication.Visible = false;

    Excel.Workbook book _excelApplication.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
    Excel.Worksheet sheet (Excel.Worksheet)book.ActiveSheet;

    Excel.Range r (Excel.Range)sheet.Cells[1"A"];
    r.Value2 heading1;
    r.EntireRow.Font.Bold = true;


    catch (Exception ex) {
    throw (ex);

    public void Close() {
    = true;
    _excelApplication.Visible = true;
    _excelApplication.DisplayAlerts = true;

    (_excelApplication != null) {
    _excelApplication = null;

    Run this application and give it a try!

  • Erika Ehrli - Adventures with Office Products & Technologies

    Visit the new InfoPath Developer Portal


    The Office Developer Center has a new version of the InfoPath Developer Portal. Visit this portal to find InfoPath articles, blogs, newsgroup threads, code samples, getting started resources, labs, webcasts, and more.


  • Erika Ehrli - Adventures with Office Products & Technologies

    My two cents... (as my team says)


    I remember many days (and nights too) when I was desperate trying to find some source code, conceptual or procedural documentation related to a specific technology and I just could not find the exact line of code that I was looking for. I remember also how grateful I felt when I found an article in a developer community Web site and I just can’t describe how thankful I was to the different authors that invested their time thinking in someone else and writing down their experiences and knowledge. By now, I owe two many beers to people that write for MSDN, Code Project, and C# Corner; however, more than buying a beer to every author who has helped me through my technical struggles, I knew that there was a better way to pay back the help and advice to the developer community: making yourself a contributor.

    I started writing technical articles and published them at my Web Site, later, some articles were published in C# Corner, and two months ago I joined Microsoft again. This time having the great opportunity to do developer evangelism through the Office Developer Center. I am currently writing my first "MSDN column" and in the middle of the writing I stopped to think about how much we can share with other people. Technology evolves so fast that a single person could never know everything there is to know. However, we still can learn from other people who share their knowledge with the community. So I am doing my best to help other people in the same way because I appreciate the effort and time that other people invest in sharing their knowledge.

    I don't have a big list of published articles because most of the technical documentation that I created in MCS belongs to the customers. However, I published this year the following technical articles:

  • Active Directory and .NET
  • Information Design
  • ASP.NET 2.0 Colorful Web Site Starter Kit
  • Insert Master-Detail Data by using the Transact-SQL OPENXML method with .NET
  • Object-Oriented Programming Concepts and .NET Part 1
  • Object-Oriented Programming Concepts and .NET Part 2
  • Building Stacks with C#
  • Insert programmatically a bitmap to Microsoft Word documents

    I hope the list keeps growing, and as I promised today to Guy Stat, I will get to "Object-Oriented Programming Concepts and .NET Part 3." I have been so excited with Office development that I completely forgot about this and I got to the very bad practice of writing an incomplete series of articles.

    If there is some topic that you think is a MUST at the Office Developer Center, please let me know. We are constantly looking for ideas of great content that developers would die to have.

    My two cents....

  • Erika Ehrli - Adventures with Office Products & Technologies

    Host an Interactive Visio Drawing Surface in .NET Custom Clients


    I was making some research on Visio development for managed applications and I found this interesting article that explains in detail how to integrate an interactive Visio drawing board to your managed applications.

    Host an Interactive Visio Drawing Surface in .NET Custom Clients

    I have some friends from MCS that used the Visio Drawing Component for a project, and at the project's time, they found few documentation that explored this topic. However, now you can see this great article and ramp up quickly to Visio development.

  • Page 7 of 8 (188 items) «45678