Update 2017-01-29: I wrote a small program, if you don't want to do any changes in the registry: excel-on-2screens

Excel on 2 screens

Ever had the problem to open two excel sheets on two different monitors?

Just once

The basic solution is to start an new instance of excel. Per default excel opens sheets in the same window if you double-click on a *.xls-file. So what to do? If you need it only occasionally, one of these tricks will work for you:

  • press Win+R, enter "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" and hit ENTER
  • click on Start and search for Excel
  • shift+click on the icon in the taskbar
  • right-click on the icon in the taskbar and click on Excel

screenshot

and then File / Open...

Permanent

If you want it all the time, you need something permanent that switches the default from 'single instance' to 'new instance everytime'. I've stumbled over Open Excel Spreadsheet in New Window for Each File and many similar recommendations:

  • open regedit
  • go to HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open
  • delete or rename command and ddeexec
  • create a new command EXCEL.EXE /e "%1"

This approach has some severe problems from the sysadmin's point of view:

  • It requires admins rights!
  • affects all users (there might be computers with more than one user and some may don't like it).
  • might not survive Office patches/updates (and surely not a repair/re-install)
  • removing the changes requires to backup & restore the previous values

So my first approach was to move the reghack from HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER (For the record: HKEY_CLASSES_ROOT is a merged view of HKCU|HKLM\Software\Classes).

Hurray, all three problems solved!
Well... except it doesn't work. Why?

Hint: merged view!

HKCU overrwrites HKLM (and so you can't remove values). The ddeexec key overrules the command if an excel instance is already running. ...and so comes:

My solution

Create another default action!

  • create HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell\Open2
  • set the default value to Excel /e "%1" in HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell\Open2\command
  • set the default value in HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell to Open2

Now Windows sees in HKCR the default action Open2 with no ddeexec-key!

  • no admin rights required!
  • only current user affected - every user can choose!
  • survives Office patches!
  • starts a new excel instance everytime

If you don't want this reghack anymore, simply delete HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12.

Update 2017-01-29: I wrote a small program, if you don't want to do any changes in the registry: excel-on-2screens

Here is a *.reg-file for copy&paste:

REGEDIT4

;-- 2015-01-07 by www.niksoft.at
;-- Note: *.xlsx points to Excel.Sheet.12
;  [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.xlsx]
;  @="Excel.Sheet.12"

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12]

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell]
@="Open2"

;-- Wanna label the new default action in your language? Here is the place:
[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell\Open2]
@="Öff&nen"

;-- Please change the path according to your installation:
[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.12\shell\Open2\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE\" /e \"%1\""

;-- and now the same for *.xls
;   [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.xls]
;   @="Excel.Sheet.8"

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.8]

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.8\shell]
@="Open2"

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.8\shell\Open2]
@="Öff&nen"

[HKEY_CURRENT_USER\Software\Classes\Excel.Sheet.8\shell\Open2\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE\" /e \"%1\""