C# 关闭并打开excel工作簿而不闪烁

C# 关闭并打开excel工作簿而不闪烁,c#,excel,vsto,C#,Excel,Vsto,我一直在尝试从我的应用程序级别实现这一点,但有些人无法正确实现这一点。以下是我在单击应用程序级加载项按钮时尝试实现的步骤: 在当前应用程序中打开现有Excel文件 刷新一下 刷新后关闭该选项(Save=true) 再次打开工作簿 做一些其他的事情 在开始上述步骤之前,我已经使用Application.screenUpdate=false和Application.enablablerts=false。但实际情况是,在第3步之后,整个应用程序刚刚关闭,然后在第5步之后,它再次出现 我也试过: 在当前

我一直在尝试从我的应用程序级别实现这一点,但有些人无法正确实现这一点。以下是我在单击应用程序级加载项按钮时尝试实现的步骤:

  • 在当前应用程序中打开现有Excel文件

  • 刷新一下

  • 刷新后关闭该选项(Save=true)

  • 再次打开工作簿

  • 做一些其他的事情

  • 在开始上述步骤之前,我已经使用Application.screenUpdate=false和Application.enablablerts=false。但实际情况是,在第3步之后,整个应用程序刚刚关闭,然后在第5步之后,它再次出现

    我也试过:

  • 在当前应用程序中打开现有Excel文件

  • 刷新一下

  • 在同一应用程序中添加新的空白工作簿(附加步骤)

  • 刷新后关闭该选项(Save=true)

  • 再次打开工作簿

  • 做一些其他的事情

  • 在这种情况下,应用程序也会从UI关闭,并在步骤6之后出现。直到第3步,屏幕才会冻结(这是需要的)

    这实际上会给用户带来非常糟糕的体验。我想在关闭并重新打开工作簿时停止关闭UI,只需冻结屏幕,以便用户看到他单击按钮时看到的相同UI

    无论如何,是否可以为用户实现无缝体验(UI体验),从而用户不会看到这种闪烁。任何方法都会有所帮助

    为什么要这样做:我正在尝试将Powerpivot模型从一个工作簿复制到另一个工作簿。以某种方式,这在手动完成时有效,但如果通过VSTO完成,则会引发错误(模型损坏)。所以,我发现在通过代码复制之后,如果我保存、关闭并打开工作簿,模型就可以了。如果这个问题有更好的解决方案,那么它对我也适用

    • 吉里贾

    用户是否需要查看刷新?如果没有,请在当前应用程序中设置一个占位符,通知用户待命?这样,用户只能在完成所有操作之前看到占位符。@findwindow:抱歉,无法获取占位符。你能详细说明一下吗?@findwindow:你的意思是我显示一些进度UI,让用户看到吗。我已经有了一个进度窗口,但实际情况是进度窗口是可见的,但在工作簿后面会关闭和打开。在关闭期间,背景是我的桌面。这给人一种非常笨拙的体验。顺便说一句,我在单独的线程中运行进度对话框,这样UI体验是无缝的-Girijano不知道你在做什么,但我有一本母版书,可以打开和关闭300多本书。master提供了一个进度UI,用户永远不会看到300多本书被打开和关闭。只有主控器/进度。好的,因为您保持主控器的原样,而不是关闭它。除master外的其他工作簿都是关闭和打开的。在我的情况下,想象一下我必须保存、关闭和打开主机本身。-吉里贾