Open file in separate Excel window from existing Excel file

Prior to Microsoft Office 2013, all Excel windows opened in the same instance of Excel. This meant that workbooks were stacked behind each other, so you were not able to view two side-by-side in full monitor view.

This issue has been resolved in Office 2013 onwards, whereby each Excel file is opened in its own instance of Excel, allowing you to put them side-by-side, on two screens or in whichever situation you desired.

For users still using Office 2010 and older, the following macro will allow you to use an Open File Dialog box and force it to open in a new instance of Excel – without needing to load a new Excel first.

You can add this macro to your personal workbook, and then create a short cut to your quick access tool bar or a custom ribbon in order to use this in a one-click shortcut method.


Sub OpenInNewWindow()

' Written by: FormatCells.com
' For the best custom made spreadsheets, visit: www.formatcells.com

Dim lngCount As Long
 Dim objExcel As Object, objWorkbook As Object
 Dim openPath As String, DefaultLoadPath As String

DefaultLoadPath = "" 'AUTO LOAD DIALOG BOX INTO THIS PATH

'LOAD OPEN FILE DIALOG BOX
 With Application.FileDialog(msoFileDialogOpen)

Application.FileDialog(msoFileDialogOpen).InitialFileName = DefaultLoadPath 'LOAD DEFAULT PATH, OR YOUR DOCUMENTS IF BLANK
 Application.FileDialog(msoFileDialogOpen).Title = "Open File in Seperate Excel" 'TITLE OF THE WINDOW
 Application.FileDialog(msoFileDialogOpen).Filters.Add "All Excel Files", "*.xlsx,*.xlsm" 'FILTER BY EXCEL FILES
 .AllowMultiSelect = False 'ONLY OPEN ONE FILE
 .Show

'EXIT IF NOTHING CHOSEN
 If .SelectedItems.Count < 1 Then
 Exit Sub
 End If

'TAKE THE PATH
 openPath = .SelectedItems(1)
 End With

'IF NO PATH WAS FED THROUGH, THEN EXIT
 If openPath = "" Then
 Exit Sub
 End If

Application.StatusBar = "Loading " & openPath & "..."
 Set objExcel = CreateObject("Excel.Application")
 objExcel.Visible = True
 Set objWorkbook = objExcel.Workbooks.Open(openPath)

Application.StatusBar = False

End Sub