gpt4 book ai didi

c# - 处理 Excel Application.ScreenUpdating 中的异常 (0x800AC472)

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:58 24 4
gpt4 key购买 nike

我正在编写一个 C# VSTO Excel 插件。在我的项目中,有更新和合并大量单元格的需求。

为了减少闪烁并提高性能,我之前将 Application.ScreenUpdating 设置为 false,并在操作完成后设置回 true

问题是有时我会异常设置回 true 状态。

错误信息:

(HRESULT: 0x800AC472) (VBA_E_IGNORE).

在这种情况下,Excel 卡住了(因为没有屏幕更新),唯一的选择是退出/重新打开 Excel。

这是我的代码:

 Excel.Application app = somevalue;
try
{
app.ScreenUpdating = false;
return true;
}
catch (Exception e)
{
e.LogExceptionError($"SafeEnableScreenUpdating -> param={enable}");
}

... some large operation.

try
{
app.ScreenUpdating = true;
return true;
}
catch (Exception e)
{
// exception is here.
e.LogExceptionError($"SafeEnableScreenUpdating");
}

到目前为止我找到的唯一可能的解决方案是循环并尝试恢复状态几次。有没有人遇到过这样的问题?

最佳答案

ScreenUpdating 调用时很可能会显示一个对话窗口。您可能会发现 Exception (HRESULT: 0x800AC472) when using Excel.Worksheet.Select after calling Excel.Workbook.SaveAs 中描述的类似异常页。

此外,我建议设置 CalculationModeEnableEvents 属性:

Sub YourSub()
On Error GoTo EH

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

' Code here

CleanUp:
On Error Resume Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub
EH:
' Do error handling
GoTo CleanUp
End Sub

关于c# - 处理 Excel Application.ScreenUpdating 中的异常 (0x800AC472),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com