如何在C:Excel互操作中解决HRESULT:0x80010001(RPC#E#u调用#u被拒绝)?
我正在使用C#/WPF进行一个项目,我使用Microsoft.Office.Interop.Excel在多个Excel文件中读写 当我读取Excel文件时,有时当我读取第1382行时,有时是2218行时,我会随机面对这个错误 我的办公软件包被激活了。 我尝试使用:如何在C:Excel互操作中解决HRESULT:0x80010001(RPC#E#u调用#u被拒绝)?,c#,excel,wpf,comexception,C#,Excel,Wpf,Comexception,我正在使用C#/WPF进行一个项目,我使用Microsoft.Office.Interop.Excel在多个Excel文件中读写 当我读取Excel文件时,有时当我读取第1382行时,有时是2218行时,我会随机面对这个错误 我的办公软件包被激活了。 我尝试使用: Thread.Sleep(100); 在foreach内部,但不起作用,例外情况仍然相同 请任何帮助,我在这一点上受阻,我没有找到任何解决方案 提前感谢,您是否安装了Cisco Webex Meetings?在花了太多时间(见下文)
Thread.Sleep(100);
在foreach内部,但不起作用,例外情况仍然相同
请任何帮助,我在这一点上受阻,我没有找到任何解决方案
提前感谢,您是否安装了Cisco Webex Meetings?在花了太多时间(见下文)之后,我终于确定这是我的问题 在Excel中,这列在“加载项”下,如“生产力工具”、“Cisco WebEx LLC”、“C:\Program Files(x86)\WebEx\Plugins\ptwbxms64.dll”。对于我的破例,DLL的文件版本为3910.0.1910.3000,日期为2019-11-15,为1493240字节,SHA-256校验和为cb49aeafa37e5313907da5c42ff470db22ecde88fa7c4afc8ed59aae7c28d70a。Cisco Webex Meetings在版本39.10.4.5中报告为“最新” 我一直在Outlook中使用Webex功能,但不知道为什么它需要在Word、Excel等中单独启用 前期研究 (不完全是一个答案,但需要一个地方,我可以回答一些长度,可能编辑,因为我继续看这个,并允许其他人回答自己的评论…) 我在这里看到了一些类似的东西——使用一个使用ComObject Excel.Application的PowerShell脚本,并且几乎一年没有更改。在过去一周内开始出现相同的错误。无法一致地复制,但也无法完成复杂的确定性脚本,除非它在完成之前失败。相同的脚本(仍然)在另一台运行类似配置的机器上工作 我现在想我已经排除了任何Windows或Office更新。2个版本相同的系统,一个工作,另一个不工作。两者都是Windows 10 1909版本18363.535、O365 1911版本12228.20364 CTR,从2019-12-11起已完全修补 我的一个陈述现在随机失败的例子:
$wsUsers.Name = 'Users'
。。。其中,$wsUsers
是新创建的Excel工作表
另一个常见故障点,$hc
是一个范围(“标题列”):
第一条线(如果事情没有首先在别处中断)总是成功的。然而,第二条线路(现在)经常发生故障,并出现此错误
假设这与最近的更新无关,那么还有很多其他的建议
我确实尝试在受影响的设备上“在线修复”O365,但没有任何更改。我还完成了O365的卸载/重新安装,没有任何更改
下面是一个最小的测试用例:
#Requires -Version 5.0
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$excel = New-Object -ComObject Excel.Application -Verbose:$false
try{
try{
$excel.Visible = $true
$wb = $excel.Workbooks.Add()
$i = 0
try{
for(; $i -le 1000; $i++){
Write-Host "Ready1: $($excel.Ready)"
$wsAbout = $wb.Worksheets[1]
Write-Host "Ready2: $($excel.Ready)"
$wsAbout.Name = "About $i"
}
}catch{
Write-Host "Ready3: $($excel.Ready)"
Write-Host "Failed at $i".
throw $_
}
}finally{
$wb.Close($false, [System.Reflection.Missing]::Value, [System.Reflection.Missing]::Value)
}
}finally{
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
}
在第一个系统上,在第一次迭代的某个地方(之前在同一个系统上工作过),这总是失败的。在第二个系统上,我不能让它失败
最典型的故障是:
Ready1: True
Ready2: True
Ready1: True
Ready3: True
Failed at 101 .
Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))
At ....ps1:16 char:17
+ $wsAbout = $wb.Worksheets[1]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
考虑另一个奇怪的错误:
Ready1: True
Ready2: True
Ready1: True
Ready2: True
Ready1: True
Ready2: True
Ready1: True
Ready3: True
Failed at 3 .
Cannot index into a null array.
At ....ps1:16 char:17
+ $wsAbout = $wb.Worksheets[1]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
有人向我解释工作表如何在前3次迭代中存在,而不是在第4次迭代中存在
我已经花了太多时间研究这个了。计划下一步重新安装我的系统…是否有可能安装了Cisco Webex Meetings?在花了太多时间(见下文)之后,我终于确定这是我的问题 在Excel中,这列在“加载项”下,如“生产力工具”、“Cisco WebEx LLC”、“C:\Program Files(x86)\WebEx\Plugins\ptwbxms64.dll”。对于我的破例,DLL的文件版本为3910.0.1910.3000,日期为2019-11-15,为1493240字节,SHA-256校验和为cb49aeafa37e5313907da5c42ff470db22ecde88fa7c4afc8ed59aae7c28d70a。Cisco Webex Meetings在版本39.10.4.5中报告为“最新” 我一直在Outlook中使用Webex功能,但不知道为什么它需要在Word、Excel等中单独启用 前期研究 (不完全是一个答案,但需要一个地方,我可以回答一些长度,可能编辑,因为我继续看这个,并允许其他人回答自己的评论…) 我在这里看到了一些类似的东西——使用一个使用ComObject Excel.Application的PowerShell脚本,并且几乎一年没有更改。在过去一周内开始出现相同的错误。无法一致地复制,但也无法完成复杂的确定性脚本,除非它在完成之前失败。相同的脚本(仍然)在另一台运行类似配置的机器上工作 我现在想我已经排除了任何Windows或Office更新。2个版本相同的系统,一个工作,另一个不工作。两者都是Windows 10 1909版本18363.535、O365 1911版本12228.20364 CTR,从2019-12-11起已完全修补 我的一个陈述现在随机失败的例子:
$wsUsers.Name = 'Users'
。。。其中,$wsUsers
是新创建的Excel工作表
另一个常见故障点,$hc
是一个范围(“标题列”):
第一条线(如果事情没有首先在别处中断)总是成功的。然而,第二条线路(现在)经常发生故障,并出现此错误
假设这与最近的更新无关,那么还有很多其他的建议
我确实尝试在受影响的设备上“在线修复”O365,但没有任何更改。我还完成了O365的卸载/重新安装,没有任何更改
下面是一个最小的测试用例:
#Requires -Version 5.0
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$excel = New-Object -ComObject Excel.Application -Verbose:$false
try{
try{
$excel.Visible = $true
$wb = $excel.Workbooks.Add()
$i = 0
try{
for(; $i -le 1000; $i++){
Write-Host "Ready1: $($excel.Ready)"
$wsAbout = $wb.Worksheets[1]
Write-Host "Ready2: $($excel.Ready)"
$wsAbout.Name = "About $i"
}
}catch{
Write-Host "Ready3: $($excel.Ready)"
Write-Host "Failed at $i".
throw $_
}
}finally{
$wb.Close($false, [System.Reflection.Missing]::Value, [System.Reflection.Missing]::Value)
}
}finally{
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
}
在第一个系统上,在第一次迭代的某个地方(之前在同一个系统上工作过),这总是失败的。在第二个系统上,我不能让它失败
最典型的故障是:
Ready1: True
Ready2: True
Ready1: True
Ready3: True
Failed at 101 .
Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))
At ....ps1:16 char:17
+ $wsAbout = $wb.Worksheets[1]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
考虑另一个奇怪的错误:
Ready1: True
Ready2: True
Ready1: True
Ready2: True
Ready1: True
Ready2: True
Ready1: True
Ready3: True
Failed at 3 .
Cannot index into a null array.
At ....ps1:16 char:17
+ $wsAbout = $wb.Worksheets[1]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
有人向我解释工作表如何在前3次迭代中存在,而不是在第4次迭代中存在
我已经花了太多时间研究这个了。计划下一步重新安装我的系统…Kate-您有Cisco吗