2011-08-02 199 views
4

我正在执行一些Excel自动化(我知道 - 不是首选解决方案)的Web应用程序。Excel自动化工作簿。打开失败:“无法获得打开属性...”

我使用Excel 2007作为我的开发平台,但目标服务器使用Excel 2003.尽管我在开发过程中明确选择了Excel 11,但遇到很多令人头疼的事情,但试图在目标服务器上加载Excel 12 interop,我已经使用后期绑定而不是早期绑定。

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

但是我无法调用后期工作簿对象的Open方法。它抛出这个错误我:

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

我一直在尝试一些不同的东西,并尝试以下操作:

  • 尝试使用相同Workbooks.Open调用后期绑定的VBScript(如VBS文件)。
  • 尝试使用迟绑定的VBA代码(例如在Excel中)使用相同的Workbooks.Open调用。
  • 尝试在Windows窗体应用程序中使用延迟绑定.NET代码的相同Workbooks.Open调用。
  • 在这三种情况下,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,以清除所有初始安装内容。

    +0

    同样的问题,我已经在Groovy脚本,使用scriptom访问Excel中com对象,当我从它运行的命令行运行它时,从我的Web服务器上的PHP引擎启动时,它会因此错误而失败。 –

    回答

    2

    我得到了同样的问题,我发现一些网站在说下列内容:尝试去文件 - 选项 - 加载项 - 在管理下拉列表中选择diabled加载项 - 单击去 - 并启用任何内容。

    它没有为我工作,但它可能适合你。

    1

    更好后期的答案则永远......

    当开发一个VBScript确保您处理,以防止正常关闭您的Excel工作簿错误。

    我得到了和你一样的错误,但是我发现当我的逻辑发生错误时,解释器不关闭Excel书籍,使它无法进一步处理。

    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" 
    

    ,请务必使用上的文件进行操作的所有功能来处理错误(另存为,关闭,等...)这里