Excelを軽快に扱うために
Microsoft 365(Office 365)のExcelで、別々のインスタンス(プロセス)でExcelを使用します。古いExcelでは簡単に使い分けできていたのですが、現在の仕様では一工夫しなければならなくなっています。
Excelで複数のファイルを開くと標準では同一インスタンスでの扱いになります。これによりファイル間でのコピーペーストやデータ参照などが容易になっていますが、サイズの大きな重いファイルを扱っていると同時に開いている別のファイルの操作性が悪くなってしまったり、予期せず1つのファイルがエラー終了してしまうと開いているExcelファイル全てが共倒れで強制終了してしまうことがある、などの弊害があります。
エラー終了からの復帰のしやすさは随分と進化していますが、復帰後、エラー直前までにどこまで作業が進捗していたかを確認するのは結局のところ作業者ですので、頻繁なバックアップや保存など、できるだけ保険をかけておきたいところです。
別々のインスタンス(プロセス)でExcelを使用する方法は、その保険の一つとして効果的です。
別インスタンスで開くとメモリ使用量が増えたりExcelファイル同士での編集効率が悪くなるというデメリットがありますので、同一インスタンスと別インスタンスのどちらかが良いという訳ではなく、状況に応じて使い分けすると作業効率が上がります。
【方法】
Excel自体のオプションでは設定できないので、別の方法で行います。
【ろ】【は】は上級者向けです。レジストリ編集が無理な場合は【い】の方法のみです。
【い】コマンドラインスイッチを付けたショートカットからファイルを開く。
【ろ】レジストリを編集して、Excel起動時のみ別インスタンスで開けるようにする。
【は】レジストリを編集して、ファイルを開く際の挙動を変更する。
将来的にはオプションなどで簡単に設定できるようになるといいですね。
【い】コマンドラインスイッチを付けたショートカットからファイルを開く。
Excel本体へのパスの末尾にコマンドラインスイッチの /x を追加してショートカットのパスの前に記載した後、ショートカットからファイルを開くとそのファイルのみ別インスタンスで立ち上がります。
ただし次に開くExcelファイルも同様に /x を付けたショートカットから開かないと、現在開いているファイルと同じインスタンスで開きますので、それぞれを別インスタンスで開きたい場合には全て /x を付けたショートカットから開く必要があります。
必要な操作がショートカットの設定のみで安全なので一番おすすめです。
《手順》
1.Excel本体のパスを取り出します。
メモ帳などのテキストエディタを使用すると編集しやすいです。
windowsのタスクバーからメニューを開き、Excelを右クリック
↓
[その他]→[ファイルの場所を開く]からExcelのショートカットを見つけます
↓
右クリックからプロパティを表示し、[リンク]に表示されている文字列をコピーします。
このパスがExcel本体の位置です。
コピー内容:"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
※Excel本体へのパスは環境により異なる場合があります。
2.コマンドラインスイッチを付加します。
1.でコピーしたパスの末尾に半角スペースで挟んだ /x を追加します。
編集前:"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
編集後:"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"□/x□
※半角スペースを視覚化するために□で記載しています。
※Excel本体へのパスやショートカットのファイルパスは環境により異なります。
3.開きたいファイルのショートカットに[2]の記述を前置します。
続いて別インスタンスで開きたいファイルのショートカットを作成します。
↓
右クリックからプロパティを表示し、[リンク先]に記載されているファイルパスの前に半角スペースを空けて2.をペーストし、保存します。
編集前:"C:\Users\test\Desktop\新規 Microsoft Excel ワークシート.xlsx"
編集後:"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"□/x□"C:\Users\test\Desktop\新規 Microsoft Excel ワークシート.xlsx"
以上です。
Excel本体のパス、ファイルのパス、それぞれ""で囲みます。/xスイッチは""で囲みません。
スタートボタンからExcel本体を起動する際やタスクバーから起動する際も実はショートカット由来ですので、そのショートカットのリンク先に/xスイッチを付加(管理者権限が必要)すると、次の【ろ】の方法もカバーすることができます。
参考:Microsoft Office 製品のコマンド ライン スイッチ
【ろ】レジストリを編集して、Excel本体の起動時のみ別インスタンスで開けるようにする。
ファイルからではなくExcel本体を立ち上げた場合のみ別インスタンスでの扱いとする方法ですが、専らExcel本体から起動する使い方をしていない限り実用的でなく、エクスプローラーからファイルを選択して開く使い方が中心の場合は【い】【は】の方法を使用する際についでに設定しておく、という補助的な位置づけになります。
この方法で既存ファイルを開くにはエクスプローラーやデスクトップからのファイル直接クリックではなく、Excel本体のメニューから開く必要があります。
ファイルを開く都度、Excel本体を新たに立ち上げてExcelからファイルを開かなければ別インスタンスになりません。
この方法はMicrosoftから公式に公開されていて、以下のリンク先に詳細な記事があります。
参考:既定で新しいインスタンスで Excel を強制的に開く方法
《手順》
1.regedit.exe起動
ファイル名を指定して実行などで起動します。
2.レジストリ値を新規作成
レジストリエディタで以下の場所に移動します。
場所:HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options
この場所にDisableMergeInstanceという名称のDWORD値を新規作成し、値のデータを1にします。
名称:DisableMergeInstance
種類:DWORD値
値:1
以上です。
【は】レジストリを編集して、ファイルを開く際の挙動を変更する。
ファイルを開く際の挙動に関するレジストリを編集すると、常時別インスタンスで開くことも、必要な時のみ別インスタンスで開くようにすることもできます。
ただしExcelファイルの拡張子個別に設定する必要がありますので、関連ファイル全てに行うのは手間がかかります。
.xlsxや旧バージョンの.xlsなど、主に使用するものに限定すると実用的です。
《手順》
1.regedit.exe起動
ファイル名を指定して実行などで起動します。
2-a.レジストリ値を編集
.xlsxのファイルをダブルクリックして開く際や右クリックメニューの「開く」から開く際に、常に別インスタンスで開くよう設定する場合、レジストリエディタで以下の場所に移動します。
場所:HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command
この場所の「既定」の文字列値にはファイルを開く際に参照するExcel本体へのリンクやコマンドラインスイッチが記されていますので、ここに【い】と同じく/xのコマンドラインスイッチを追加します。
名称:既定
種類:REG_SZ
編集前の値:"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" “%1"
編集後の値:"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE"□/x□"%1″
※半角スペースを視覚化するために□で記載しています。
※Excel本体へのパスは環境により異なります。
以上です。
HKEY_CLASSES_ROOT\Excel.Sheet.12の「既定」の文字列値には「Microsoft Excel Worksheet」とファイルの説明が記載されています。
.xlsx以外のファイルの挙動を設定したい場合は「HKEY_CLASSES_ROOT\Excel.」から始まるキーの「既定」の文字列値を参考にすると編集対象の拡張子を規定するレジストリを見つけることができます。
例1).xlsm 場所:HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12
例2).xls 場所:HKEY_CLASSES_ROOT\Excel.Sheet.8
2-b.レジストリのキーと値を新設
ファイルをダブルクリックして開く際や右クリックメニューの「開く」から開く際は同一インスタンスで開き、右クリックメニューで必要時のみ別インスタンスで開くメニューを追加する場合、2-1の\Open\commandのレジストリには手を付けず、任意の名称のキーを新規追加してメニューを増設します。
場所:HKEY_CLASSES_ROOT\Excel.Sheet.12\shell
名前はよほど変な名前でない限り「open2」でも「AloneInstance」でも何でも構わないです。例として「open2」とします。
編集後:HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\open2
キーを作成すると自動的に「既定」の名前の文字列値「値の設定なし」が追加されます。
この「既定」に文字列値を設定すると、その内容がそのままファイルを右クリックした際のメニューに表示されますので、「別インスタンスで開く」など分かりやすい名称に編集します。
名称:既定
種類:REG_SZ
編集前の値:値の設定なし
編集後の値:別インスタンスで開く
作成した「open2」の中にさらに「command」という名前のキーを新規作成します。
「command」という名前は別名不可です。
場所:HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\open2\command
「command」のキーを作成するとやはり自動的に「既定」の名前の文字列値「値の設定なし」が追加されます。
この場所の「既定」の文字列値はHKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\commandの「既定」の文字列値に/xのコマンドラインスイッチを追加した内容を貼り付けます。
コピー内容:"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" “%1"
編集後:"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE"□/x□"%1″
名称:既定
種類:REG_SZ
編集前の値:値の設定なし
編集後の値:"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE"□/x□"%1″
以上です。
HKEY_CLASSES_ROOT\Excel.Sheet.12\shellの「既定」の文字列値はダブルクリック時の挙動をどのキーで定めているかが記されていて、標準では「Open」になっています。この値を新設した「open2」に変更すると、右クリックで「開く」を選択して開く時以外全て別インスタンスで開きます。
2-aと同じく、別の拡張子にも設定する場合は同様の作業を繰り返します。