如何从 .Net Web 系统运行 Excel 宏



我正在尝试从.NET Web系统运行一个名为Sheet1.Workbook_Open的Excel宏。

下面是我当前的代码。

xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Open("C:TestingTempFile.xlsm")
xlWorkSheet = xlWorkBook.Worksheets("TestSpreadsheet")
Dim MacroName As String = "Sheet1.Workbook_Open"
xlApp.Run(MacroName)
Dim FileDate As String = SysdateTextBox.Text
FileDate = FileDate.Replace(" ", "")
FileDate = FileDate.Replace("/", "")
FileDate = FileDate.Replace(":", "")
FileName = "C:TestingFile" & FileDate & ".xlsm"
xlWorkBook.SaveAs(FileName)
xlWorkBook.Close(True)
xlApp.Quit()

但是,它在线路xlApp.Run(MacroName)上失败并出现错误;

Exception from HRESULT: 0x800A01A8 
System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A01A8

为什么会发生这种情况,我该如何解决?当项目托管在我的本地计算机上时,不会发生此错误 - 仅当它位于服务器上时。

怕这不是你想听到的答案,但正确答案是......你没有

Microsoft明确指出,无人参与代码(包括 Web 应用程序(不支持 Office 自动化

Microsoft 目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务(自动化Microsoft Office 应用程序,因为在此环境中运行 Office 时 Office 可能会表现出不稳定的行为和/或死锁。

如果需要与 Excel 文件交互,正确的解决方案是使用支持 Excel 文件格式的 .NET 库。不幸的是,这意味着您将无法使用现有的旧版 Excel VBA 代码。

定义新的公共过程(添加新模块(:

Public Sub MyMacro()
    'do something
End Sub

然后这样称呼它:

Dim sMacroName As String = "TempFile.xlsm!MyMacro"
xlApp.Run(sMacroName)

更多内容:

http://forums.asp.net/t/1366665.aspx?How+to+run+a+Macro+of+an+Excel+file+opened+on+web+server

http://www.nullskull.com/articles/create_macro_at_runtime_in_dotnet.asp

http://support.microsoft.com/kb/306682

http://www.siddharthrout.com/2012/03/20/calling-excel-macros-programmatically-in-vb-net/

我希望它有所帮助。

最新更新