【问题标题】:COMException (0x80010108 - RPC_E_DISCONNECTED) When Closing Excel.Workbook关闭 Excel.Workbook 时出现 COMException (0x80010108 - RPC_E_DISCONNECTED)
【发布时间】:2010-03-10 22:37:02
【问题描述】:

当我运行以下代码时,出现以下异常:

''# NOTE: ExcelApp is a Private main form variable
Dim ReportBooks As Excel.Workbooks = ExcelApp.Workbooks
Dim ReportBook As Excel.Workbook = ReportBooks.Open(localFilename)
Dim ReportSheet As Excel.Worksheet = ReportBook.Sheets("Report")

''# Retreive data from sheet

ReleaseCOM(ReportSheet)
ReportBook.Close(True) ''# Error raised here
ReleaseCOM(ReportBook)
ReleaseCOM(ReportBooks)
ERROR:
COMException was unhandled
The object invoked has disconnected from its clients.
(Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

注意:所有数据似乎都已正确检索。

请帮助我诊断并解决此错误。

【问题讨论】:

    标签: vb.net excel interop com-interop excel-interop


    【解决方案1】:

    RPC_DISCONNECTED...可怕的“调用的对象已与其客户端断开连接。”问题。这有很多原因,看起来你已经用Excel. 覆盖了全局变量问题。你能把第一个ReleaseCOM(ReportSheet)放在ReportBook(Close)下面并运行它吗?另外,请查看this

    【讨论】:

    • 不幸的是,交换导致错误的行和之前的行没有效果。尝试关闭工作表时程序仍然崩溃。
    • 伙计,很抱歉听到这个消息。我处理过这个问题几次,让它发挥作用总是像魔法一样。这里的主要问题是,当您到达ReportBook.Close(True) 时,Excel 不再管理 ReportBook - 某些东西正在释放它 - 因此出现错误。您是否尝试过通过调试向 ReportBook 添加监视的代码单步执行?
    • 知道了!代码步进工作。我的代码不小心打开了同一个文件两次并关闭了它两次(有一次然后在第二次关闭时崩溃了)。感谢您的帮助。
    • 很高兴听到这个消息。那个特别的错误真的很令人沮丧,所以你把事情解决了真是太好了!
    • 没错!对同一代码进行了多次调用,其中包括关闭操作。
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多