Monday, April 26, 2010

Compilation: Sharepoint 2010 Themes

I want to share some excellent posts I've found about changing themes in SharePoint 2010, something even an end-user can accomplish without assistance from an administrator.

You can change themes within SharePoint, but you can also create new themes using Theme Builder (available from Microsoft Connect). In these posts, you'll find step-by-step instructions on utilizing the built-in theme tools, instructions on creating new themes using Theme Builder, and even some notes on how CSS and themes are integrated in SharePoint 2010.

The next time you want to do some relatively straightforward color changes to the site, give this collection of notes a look!

Themes Overview from TechNet
Themes on SharePoint 2010 versus 2007 from Andreas Glaser
How Themes Work in SharePoint 2010 from Sharepoint Bits
SharePoint 2010 Themes from SharePoint Branding & Design
How to Create a Custom Theme for SharePoint 2010 from Todd Baginski
SharePoint 2010 and PowerPoint Themes from the SharePoint Coffee House
Theme Builder from Microsoft Connect

Wednesday, April 21, 2010

Method 'Post' of object 'IOWSPostData' Failed in Sharepoint 2010

Over the past several months I've been testing out new features in Sharepoint 2010, one of which is the new chart webpart. To test it I've been trying to import a spreadsheet into Sharepoint 2010, but I've never gotten the import to work without an error, until now. Everytime I tried to import a spreadsheet, no matter how small or simple, I got a method 'Post' of object 'IOWSPostData' Failed error message. Here's what happened to me, and how I fixed the problem.

Background
I'm running Sharepoint 2010 (the release candidate) and Office 2007. I confirmed this error message does not occur if you're running Sharepoint 2010 and Office 2010, only when the environments are
mixed.
  1. From your site, open All Site Content. Click Create and select Import Spreadsheet. Give the list a name and navigate to the file location.

  2. Choose Range of Cells and select the range on the spreadsheet.



  3. Click Import. The following error message will appear:



  4. The same error will appear if you select a Named Range or a Table Range.
How to Fix It
I found several other folks (here and here are the best examples) had had this problem as well, but none of their fixes had worked for me because I had a hybrid environment of 2010 and 2007. I'm guessing that other folks will encounter this problem too, because big companies don't often migrate Office all at once, especially while they're evaluating new products like Sharepoint 2010.

All of the posts I'd read about this problem suggested editing the Excel Add-in file EXPTOOWS.XLA located in the \Program Files\Microsoft Office\Office 12\1033 folder. But editing that file didn't help me a bit. Turned out there's another version of that same file in \Program Files\Microsoft Office\Office14\1033, and that was the one that needed editing in my case.

Before you begin, a few notes for the uninitiated:
  • EXPTOOWS.XLA is a hidden file. In order to find it, you'll have to show all hidden files on the system. Do this through the Control Panel, Appearance and Personalization, Folder Options, Show Hidden Files and Folders.
  • The 1033 folder is read-only, so you 1) must be an administrator to write to the folder and 2) can't just edit the file and save it back to the same directory.
To modify the file:
  1. Once you've found the file, rename it to OldEXPTOOWS.XLA (this will give you a backup in case something happens). You may be prompted to confirm the change because this is a read-only folder.
  2. Double-click on OldEXPTOOWS.XLA. This will open Excel but it will look like nothing else is happening. On your keyboard, press ALT-F11 to open the built-in Visual Basic editor. It will look something like this:



  3. Open the code window and scroll until you find this section:

    Sub Initialize(List, Title, URL, QuickLaunch)
    strQuickLaunch = QuickLaunch
    aTarget(iPublishURL) = URL
    aTarget(iPublishListName) = List
    aTarget(iPublishListDesc) = Title
    lVer = -1 ' can't tell STS server version
    If Val(Application.Version) >= 12 Then
    lVer = Application.SharePointVersion(URL)
    End If
    End Sub

  4. Comment out this line lVer = Application.SharePointVersion(URL) by adding a single apostrophe ( ' )to the beginning of the line.
  5. Add a line immediately beneath the commented line that reads lVer = 2 (that's an L, as in lollipop). The section will now look like this (I have highlighted the changes):

    Sub Initialize(List, Title, URL, QuickLaunch)
    strQuickLaunch = QuickLaunch
    aTarget(iPublishURL) = URL
    aTarget(iPublishListName) = List
    aTarget(iPublishListDesc) = Title
    lVer = -1 ' can't tell STS server version
    If Val(Application.Version) >= 12 Then
    ' lVer = Application.SharePointVersion(URL)
    lVer = 2
    End If
    End Sub


  6. Click File, Save. You will get an error message that the file is Read Only. Click OK to continue. A Save As dialog will appear. Change the file type to Excel Add-in (.xla). When you do this, the file location will change to the Excel addin directory - you will want to save the file to somewhere you can remember (like the Desktop). Make sure you've named it EXPTOOWS.XLA.
  7. Close the VB editor and exit Excel.
  8. Using Windows Explorer, navigate to \Program Files\Microsoft Office\Office14\1033.
  9. Copy the new file (EXPTOOWS.XLA) from your Desktop (or wherever you saved it) into \Office14\1033. You will be prompted to confirm this action.
  10. When the new file is in the \Office14\1033 folder, you should be able to import the spreadsheet into Sharepoint 2010 (although you may have to restart IE or the Sharepoint session).
Some of the blog posts say that you can change the version in the line from lVer = 2 to lVer = 3 and try that too. In my tests, it didn't matter which version you used as long as it was in the version in the \Office14\1033 directory. A modified EXPTOOWS.XLA in the \Office12\1033 folder didn't seem to cause this any ill-effects either.