如何在一个单独的Excel实例中重新打开工作簿

时间:2019-02-10 23:06:06

标签: excel vba

我希望我的工作簿在其自己的单独Excel实例中打开。如果它与其他工作簿一起打开,则应在新实例中重新打开自身,也许使用Workbook_Open事件中的代码。此外,工作簿应防止文件在同一实例中打开,方法可能是将文件移至新实例或将其自身移至新实例。任何想法将不胜感激。

编辑: 这样做的目的是,加载有代码和用户窗体的工作簿容易崩溃,从而导致在同一实例中打开的所有其他工作簿崩溃并丢失所有未保存的更改,并且最终用户感到沮丧。另一个问题是,在使用Application.OnKey时,我遇到了三个问题:1.快捷方式触发了通常旨在对其所驻留的工作簿执行操作的代码。这可以通过检查托管工作簿是否处于活动状态来解决。工作簿在运行之前,但是最好先阻止它们运行。 2.可以将常见的快捷方式重新分配以运行自定义代码,但是通常这不会影响其他工作簿。 3.当多个工作簿为自定义子项分配了相同的快捷方式时,就会发生问题。最近打开的工作簿将接管快捷方式操作。另外,关闭包含快捷方式的工作簿时,使用快捷方式会自动重新打开工作簿,这是不希望的!删除自定义快捷方式并不能解决使用同一快捷方式的多个工作簿的问题。

因此,最好的解决方案是在自己的应用程序实例中启动此类工作簿。

1 个答案:

答案 0 :(得分:1)

我不得不制作一个Excel工作簿(正在运行一个计时器)在另一个Excel实例中重新打开自己。这是为了让用户使用Excel的第一个实例,而不会影响计时器。我不确定这是否正是您所需要的,但这肯定可以帮助您入门。您可以在GitHub here上找到代码。

您感兴趣的过程称为OpenItSelfInAnotherInstance,位于OpenItself.bas

要使其正常工作,您还需要包含API_Maximize.basAPI_Sleep.basUDF_ExcelIntances.bas中包含的代码。 (如果您复制粘贴,请始终排除显示以下内容的行:Attribute VB_Name =...,因为仅当您从VBE导入* .bas文件时,该行才存在)

请让我知道那里是否有任何不清楚的地方,因此如果需要,我可以在答案中添加一些解释。