在.NET中发生了未处理的类型'System.Runtime.InteropServices.COMException'的异常

时间:2011-08-18 10:54:15

标签: .net excel exception

运行涉及Microsoft Office Excel的应用程序时出现此错误。我的电脑没有安装Microsoft Office,所以我认为这可能是问题所在。我引用了一些有助于应用程序运行的库,但它没有帮助,我仍然遇到错误。

这是整个错误消息: “'应用程序名'中出现了'System.Runtime.InteropServices.COMException'类型的未处理异常。

其他信息:CLSID为{00024500-0000-0000-C000-000000000046}的COM对象无效或未注册。“

以下是我使用的库:

  • Interop.Excel
  • Interop.KEYCODEV2Lib
  • Interop.Microsoft.Office.Core
  • Interop.Office
  • Interop.VBIDE
  • 的Microsoft.Office.Interop.Excel
  • Microsoft.Vbe.Interop
  • stdole
  • 系统
  • System.Data
  • System.Drawing中
  • System.Windows.Form
  • 了System.XML

以下是发生错误的代码块:

cboCounty.Enabled = False
    If ofdExcel.ShowDialog = DialogResult.OK Then
        txtFile3.Text = ofdExcel.FileName
        btnClear.Enabled = True
        Application.DoEvents()

        myExcel = New Excel.Application
        myExcel.DisplayAlerts = False

        wbLog = myExcel.Workbooks.Open(ofdExcel.FileName, True, True)
        cboCounty.Items.Clear()

        For s As Integer = 1 To wbLog.Worksheets.Count
            wsLog = wbLog.Worksheets(s)
            If UCase(wsLog.Name) <> "SUMMARY" Then
                cboCounty.Items.Add(wsLog.Name)
            End If
        Next

        cboCounty.Enabled = True
    End If

发生错误的行myExcel = New Excel.Application

有人可以帮我解决这个问题。 谢谢。

1 个答案:

答案 0 :(得分:0)

这背后的想法是你在外部打开Excel作为未处理的对象,如果你没有安装它,这是你的问题。

使用外部对象时,请记住使用外部对象运行垃圾收集,因为它们位于非托管堆上,无法从.NET框架内自动清除。