(apologies, I posted this first to the general Office 2010 forum, but then realized this was probably a better spot to post)
We have an Excel COM add-in installed on users' PCs. This add-in responds to workbook open events by opening a particular XLA file (also deployed to the PC) to make certain features available. This process works flawlessly when Excel files are opened locally - but when a user attempts to open an Excel file from an IE link, we get the following error: "Open method of Workbooks class failed". This is happening on the line that is trying to open the XLA file. This only happens when launching an Excel link from IE - works fine in Chrome or Firefox.
I have found several posts on this topic, but no solutions:
1. This post (https://social.msdn.microsoft.com/forums/office/en-US/73c96005-84af-4648-b103-32b677205be3/open-method-of-workbooks-class-failed) is the closest to our problem. In this case, the "answer" was that the user may not have access to the 2nd workbook being opened. But in our case, we're opening an XLA that is on the local machine, and I've confirmed that it is not corrupt and accessible (read & write, just in case!) to Everyone.
2. This (very old) post (http://www.pcreview.co.uk/forums/open-method-workbooks-fails-excel-hosted-ie-t965608.html) seems similar, but is talking about opening Excel inside of IE. This is not what we're doing - the link is supposed to (and does) open Excel outside of IE. Interestingly, Excel.exe is being launched with the "-embedded" flag, even though it isn't running in the IE window. When launching Excel by opening the file locally, Excel.exe is run with the "/dde" flag instead. Clearly the "-embedded" mode is what is causing the problem. I could change the links on the web page to use some JavaScript to open Excel differently... unfortunately, the links are actually generated by SharePoint (the Excel files are in a SP repository), so this is not really an option.
3. This Microsoft KB article (http://support.microsoft.com/kb/268016) talks about problems opening an XLA directly from IE... but this is the case of a link pointing directly to an XLA file, not opening a regular workbook that in turn opens an XLA, as is my case. In fact, this article specifically points out in the "More Information" section that "End users do not normally open XLAs; instead they open an XLS that (if needed) loads one or more XLAs during startup." ==> precisely what I'm trying to do that is giving me the error!
I've replicated the situation with a very simple COM add-in (created in VS2010 using VB.Net) and a very simple XLA file (does nothing, just pops up a message in auto_open). For anyone wanting to try it out, here is the exact test case:
1. In Excel, create a simple XLA file containing only the following code, and save it in C:\TEMP\dummy.xla:
Sub Auto_Open() MsgBox "Auto Open fired" End Sub
2. In Visual Studio, create a new Excel 2010 Add-In. I created mine via Visual Basic, but I doubt the choice of language matters. Place the following code in ThisAddin.vb:
Public Class ThisAddIn Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup AddHandler Me.Application.WorkbookOpen, AddressOf Application_WorkbookOpen End Sub Private Sub ThisAddIn_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown End Sub Sub Application_WorkbookOpen(ByVal workbook As Excel.Workbook) On Error GoTo ErrHandler If (Not workbook.Name.Contains("dummy.xla")) Then MsgBox("Workbook open") Application.Workbooks.Open("C:\temp\dummy.xla") Application.Workbooks("dummy.xla").RunAutoMacros(Excel.XlRunAutoMacro.xlAutoOpen) End If Exit Sub ErrHandler: MsgBox(Err.Description) End Sub End Class
3. Build & publish this add-in and install it on the same machine as the XLA created in step 1.
4. Create and save an empty Excel workbook (I called mine WayneTest1.xlsx) - save it locally (on your desktop), and put a copy somewhere on your web server (I put mine directly in c:\inetpub).
5. Create an HTML file with a link to that workbook, saving it to the same web server location - here is mine:
<html><body><a href="WayneTest1.xlsx">Link to Excel file</a></body></html>
6. Double click the workbook on your desktop (from step 4) - opens fine, I get the "workbook open" message, following by the "Auto Open fired" message.
7. In Internet Explorer, navigate to the HTML file specified in step 5 and click on the link - when prompted, select "Open" - I get the "workbook open" message, following by the error message "Open method of Workbooks class failed".
Here are a few things I've ruled out / tried so far:
- Unchecked all the "Protected View" settings in Excel, made no difference
- Unchecked all the "File block settings" in Excel, made no difference
- Made sure dummy.xla was open for read & write to Everyone
- Made sure the web page was in Trusted sites and set the security level to Low for those sites in IE
- Tried making the local desktop file (step 6) readonly, made no difference (i.e. launching it locally still worked fine)
- Tried using Excel 2013 - made no difference
Any ideas / suggestions?