Excel Automation Workbooks.Open失败:“无法获取Open Property ...”

时间:2011-08-02 15:36:45

标签: asp.net excel

我正在使用执行一些Excel自动化的Web应用程序(我知道 - 不是首选解决方案)。

我使用的是Excel 2007作为我的开发平台,但是目标服务器使用的是Excel 2003.尽管我在开发过程中明确选择了Excel 11,但在尝试加载到目标服务器上的Excel 12互操作后遇到了很多麻烦。已经采用后期绑定而不是早期绑定。

这使我能够实现Excel的实例化(我可以看到Excel进程在目标服务器上的任务管理器中启动)。

但是我无法调用后期绑定的Workbooks对象的Open方法。它向我抛出了这个错误:

"Unable to get the Open property of the Workbooks class"

我一直在尝试一些不同的事情,并尝试了以下内容:

  • 尝试使用后期绑定VBScript(例如vbs文件)打开相同的Workbook.Open调用。
  • 尝试使用相同的Workbook。使用后期绑定的VBA代码打开调用(例如在Excel中)。
  • 尝试使用相同的Workbook。在Windows窗体应用程序中使用后期绑定.NET代码打开调用。
  • 在所有三种情况下,Excel自动化成功。只有当我部署ASP.NET应用程序时,才会出现此错误。在一个非常简化的形式中,代码类似于:

    Dim xlApp As Object 'Excel.Application
    Dim xlBook As Object ' Excel.Workbook
    xlApp = CreateObject("Excel.Application") 'New Excel.Application
    xlBook = xlApp.Workbooks.Open("somefile.xls", , True, , , , , , , , , , , , False)
    

    有没有人对可能发生的事情有任何想法?我检查了用户Excel进程启动的用户,并且它与我成功运行Windows Forms .NET应用程序的用户相同。我已经打开Excel作为此用户清除所有初始设置的东西。

    3 个答案:

    答案 0 :(得分:2)

    我遇到了同样的问题,我发现有些网站会说以下内容:尝试转到文件 - 选项 - 加载项 - 在管理下拉列表中选择diabled加载项 - 点击go - 然后在其中启用任何内容。< / p>

    它对我不起作用,但可能适合你。

    答案 1 :(得分:1)

    更好的迟到答案,然后永远......

    开发VBscript时,请确保处理的错误无法正确关闭Excel Book。

    我遇到了和你一样的错误,但我发现当我的逻辑中出现错误时,解释器不会关闭Excel Book,使其无法进一步处理。

    Dim XLWkbk 'Excel workbook
    Set xlApp = CreateObject("excel.application") 
    
    On Error Resume Next
    Set XLWkbk = xlApp.Workbooks.Open("somefile.xlsm")
    If Err.Number <> 0 Then ' Catch your error
       WScript.Echo "Error while opening: " & Err.Number & " " & Err.Description
       XLWkbk.Close False ' Close your workbook.
       xlApp.Quit ' Quit the excel program. 
       WScript.Quit 
       Err.Clear
    End If
    WScript.Echo "Opened" 
    

    确保使用对文件进行操作的所有函数处理错误(SaveAs,Close等等)

    答案 2 :(得分:0)

    省略最后一个参数对我来说是固定的。

    xlBook = xlApp.Workbooks.Open("somefile.xls", , True, , , , , , , , , , , , )