gpt4 book ai didi

c# - 写入单元格会在我的 VSTO 加载项中启用 ScreenUpdating

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:10 29 4
gpt4 key购买 nike

我有一个奇怪的问题,即 Excel 在我的开发机器和测试机器上的行为不同。

在我的加载项中,我在几个地方为长时间运行的进程关闭了 ScreenUpdating。在我的机器上这工作正常。在测试机上,我一写入单元格,Excel 就会设置 ScreenUpdating = true

下面的代码为我演示了这个问题。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Microsoft.Office.Interop.Excel.Application excel = Globals.ThisAddIn.Application;

MessageBox.Show(excel.ScreenUpdating.ToString());

excel.ScreenUpdating = false;
MessageBox.Show(excel.ScreenUpdating.ToString());

Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
Worksheet w = (Worksheet)workbook.Worksheets[1];
((Range)w.Cells[1, 1]).Value = "Test";
MessageBox.Show(excel.ScreenUpdating.ToString());
}

在我的机器上,打开 Excel 会出现三个消息框,上面写着

“真”、“假”、“假”。

他们说在测试机上

“真”、“假”和“真”。

我还逐步使用了远程调试器,并观察到 ​​ScreenUpdating 属性在设置单元格值后立即发生变化。此外,这并不是唯一重置 ScreenUpdating 的东西。添加或删除工作表或工作簿也将执行此操作。

每个系统上的 Excel 版本相同(14.0.6112.5000(32 位))。

这可能是什么原因造成的?我该如何修复它,以便 Excel 尊重我的设置?

最佳答案

我遇到了同样的问题,即 ScreenUpdating(和其他设置)被带有 VSTO 插件的 Bloomberg 插件重置为 true。他们的支持正在制定解决方案,但与此同时,以下解决方案工作正常:

通过在与其单元格交互时隐藏每个工作表,屏幕不会更新,您将获得性能优势。确保不要试图隐藏最后一张纸,因为它会引发错误。不确定这是否适合您的项目,但对我来说是一个可行的解决方案。

下面是 VB.NET 中隐藏工作表的一些示例代码:

' Create a book with a single worksheet
Dim Book As Excel.Workbook
Book = Globals.ThisAddIn.Application.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet)


'% Create sheet variable
Dim Sheet As Excel.Worksheet
Sheet = TryCast(Book.ActiveSheet, Excel.Worksheet)

' Visible
Sheet.Visible = Excel.XlSheetVisibility.xlSheetVisible

' Hidden but user able to show
Sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden

' Hidden for user as well
Sheet.Visible = Excel.XlSheetVisibility.xlSheetVeryHidden

关于c# - 写入单元格会在我的 VSTO 加载项中启用 ScreenUpdating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10980344/

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