将打开的Excel文档移动到单独的窗口


14

相关(但不相同):在新窗口中打开Excel文件

如果我有一个Excel实例,并且在同一窗口中打开了多个文档。有没有一种方法可以“撕下”当前正在运行的Excel实例中的一个窗口,使其位于完全不同的窗口中?

什么是符合该法案:

  • 并排/查看所有/其他MDI内容;我想要一个单独的窗口,该窗口可以在另一个监视器上单独最大化,并由窗口系统以不同方式进行管理,等等。
  • 在正在运行的实例中保存/关闭它,然后打开一个新的Excel实例并在那里打开文件(这是我目前正在做的事情,但这很痛苦)

编辑:目标Excel版本是2007和2010,尽管可以进行任何操作


我帮不上忙,但我在Excel中都看过了:一个窗口中的所有内容(类似于MDI),每个工作表一个窗口。你检查偏好了吗?也许这是一个选择?
亚伦·迪古拉

1
@Aaron可能是可以接受的,并且可能会比我现在得到的更好,但是我在任何地方都看不到这种选择
Daniel DiPaolo 2011年

1
微软该死的将我锁定在一个Excel窗口中!您的操作系统不是Windows吗?欢迎使用Window 7!
dunxd 2012年

@dunxd-有趣的是,现在阅读“旧”评论,因为在将来,不断有用户抱怨Excel在单独的窗口中打开每个工作簿。
ashleedawg '18年

现在,Chrome中的选项卡式窗口可以“撕掉”或重新组合在一起,是两全其美的。伟大的UI前进。
dunxd

Answers:


4

有趣的主意。我完全有信心,如果没有自定义宏,您将无法执行此操作。在一个下雨的星期天...

Sub OpenInNewInstance()
     Dim objXLNewApp As Excel.Application
     Dim doc As String

     doc = ActiveWorkbook.FullName
     ActiveWorkbook.Close True

     Set objXLNewApp = CreateObject("Excel.Application")

     objXLNewApp.Workbooks.Open doc
     objXLNewApp.Visible = True
End Sub

假设您不熟悉VBA,则需要:

  1. 复制上面的代码
  2. 打开新的Excel工作簿,打开Excel的VBA编辑器(Alt + F11)
  3. 右键单击VBAProject(Book1)(或在左侧菜单中调用的名称)
  4. 选择插入>模块
  5. 将代码粘贴到主窗口中
  6. 返回Excel中,选择另一个工作簿以测试代码(它将在关闭工作簿之前将其保存)
  7. 返回VBA编辑器,选择粘贴的模块,然后按播放按钮

我的计算机上安装了3个版本的Excel,当我在Excel 2010中运行它时,它将打开一个Excel 2003的新实例。

如果适合您的需求,则可以将其打包到一个加载项中,并将其作为功能区按钮提供。让我知道,如果您不熟悉此方法,我可以提供帮助。

编辑:如果这种方法对您有用,那么显然会添加一些其他代码,以确保在另一个窗口中最大化Excel的新实例。让我知道。


太棒了!(考虑到必须使用Excel 2010的情况)
Tobias Kienzler 2014年

或者,您可以右键单击Excel图标,然后单击Microsoft Excel,这将打开一个新实例(实际上,上面的代码似乎正在执行此操作)。我所做的(偶然的,无法弄清楚如何重复)是在现有应用程序的MDI之外打开了一个Excel工作簿(有效地使我在单独的窗口中拥有该工作簿),但仍然能够与其他工作簿进行交互(用于我的主MDI中的vlookups(vlookups等)。)
威廉

3

我没有办法将工作表“撕下”到新窗口中,但是如果您从一开始就知道需要两个窗口,这是最快的方法:

正常打开第一个文件。SHIFT +单击Excel任务栏按钮(在屏幕底部,在“开始”按钮和时钟之间)。这将强制Excel将新实例打开为单独的窗口。进入该新窗口,然后单击文件->打开以打开第二个文件。根据需要冲洗并重复多个窗口。

不幸的是,如果您想双击文件以打开Excel,则必须打破第二个窗口的习惯,这是我通常的问题。但是,通过一些前瞻性思考,没有比这更简单的方法了。


0

要打开2个实例,请双击要打开的第一个文件。打开后,转到start / programs / msoffice / excel,然后从那里打开另一个实例。然后,您可以使用File / open。如果没有,请查看“文件夹选项”>“文件类型”,“ XLS”,“高级”并检查“打开”表单。


我特别提到我已经这样做了。
Daniel DiPaolo 2011年

好的,很抱歉,我的窗口和实例混杂在一起。而且我想您已经尝试过在两个监视器上最大化excel,然后查看->新窗口,该窗口可让您单独管理该窗口?
戴夫

“视图”>“新建窗口”仅在同一实例内创建一个新窗口,而不是新的非MDI窗口。
Daniel DiPaolo 2011年

0

上面的答案可能会与活动工作簿以外的其他工作簿一起使用,这是我需要做的。这是我用的


在启动时,确保实例中的工作簿是单独的:

Private Sub Workbook_Open()
    If Application.Workbooks.Count > 1 Then  'check if there's >1 open wb's in this instance
        If MsgBox("This workbook will be moved to a new instance of Excel," & vbLf & _
            "so as to not affect performance of your other workbooks.", _
            vbOKCancel + vbInformation + vbDefaultButton1 + vbMsgBoxSetForeground) _
            = vbCancel Then Exit Sub
        Debug.Print Application.Hinstance, "Moving wb to new instance."
        OpenInNewInstance
        Debug.Print Application.Hinstance, "Moved wb to new instance."
    Else
        Debug.Print "This wb is in it's own instance. (#" & Application.Hinstance & ")"
    End If
End Sub

Sub OpenInNewInstance()
    With ThisWorkbook
        .Save                                           'save workbook before making it read-only
        .ChangeFileAccess xlReadOnly                    'make this wb read-only (so the other isn't)
        Shell ("excel.exe /x """ & .FullName & """")    'open current wb in new instance
        .Close                                          'close this workbook
    End With
End Sub

此代码放在ThisWorkbook模块,从而使工作簿时立即打开它检查是否它是唯一在这种情况下打开工作簿,如果没有:

  1. 保存当前工作簿
  2. 将当前wb设置为只读(以防止出现第二个副本)
  3. Shell到命令提示符以在新实例中打开Excel(使用Excel的/x命令行开关),从而加载当前工作簿的另一个实例
  4. 关闭当前工作簿

如有必要,可以在打开新实例时使用自定义命令行将指令等转移到新实例。您还可以考虑为新实例隐藏应用程序窗口的优缺点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.