Excelで複数のブックを開いて作業をしていると、別のExcelのウィンドウが選択できないことがある。これは、別のブックで[セルの書式設定]などのダイアログを表示させているためだ。別のブックでダイアログが表示された状態でも作業が行えるようにする方法を紹介しよう。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象:Office 2013/2016/2019/365
「Microsoft Excel(エクセル)」で複数のブックを使っているとき、ウィンドウを選択しようとしても、音が鳴ってウィンドウを選べない経験をしたことはないだろうか? これは、他のウィンドウで[セルの書式設定]などのモーダルダイアログを表示させているためだ。モーダルダイアログは、これを閉じない限り、他のウィンドウでは操作を行うことができないからだ。
Excelでは、Excel 2013から、単一プロセス(シングルプロセス)での起動が標準となり、何も設定しなければ、常にこういう状態となる。このため、古くからのExcelユーザーにはこの挙動に慣れないものを感じるだろう。
これを解消するには、Excelのブックを個別のプロセスで起動するとよい。ただし、デメリットもあるので、単一プロセスと個別プロセスを使い分ける必要がある。ここでは、Excelを個別プロセスで起動する方法や使い分けの方法を解説する。
簡単に言うと、標準状態では、Excelというプログラムはウィンドウを幾つ開いても1つの「プロセス」だけがメモリ内に置かれている状態となる。つまり、単一のExcelプロセスが、全てのウィンドウを表示させている。
このとき、[セルの書式設定]などのモーダルダイアログを表示させると、他のウィンドウでは、モーダルダイアログを閉じない限り操作が行えなくなる。そもそもモーダルダイアログとは、実行する処理がアプリケーションの状態に大きく影響し、その間に他の処理を行ってしまうとアプリケーション内部の状態を正しく保てなくなるような場合に利用するものである。分かりやすい例は、Excelの「オプション」設定だ。Excelのオプション設定は、設定項目によっては、起動している全てのブックウィンドウに影響を与えてしまう。
これを回避するには、Excelを個別プロセスで起動すればよい。そうすれば、たとえ他のExcelウィンドウでモーダルダイアログを開いていても、別のプロセスのため影響を受けずに作業が続けられる。
ただ、Excelを個別プロセスで起動する場合、メモリ消費量が増加する。また、別プロセスとなるExcelウィンドウ間の貼り付けでは、コピー&ペーストにWindows OSが用意したクリップボード機能を使うため、セル内容によっては下画面のような警告ダイアログが表示される。この場合、数式はコピーされず、その結果が値としてコピーされてしまうことになる。
式のままセルを貼り付けたい場合には、貼り付け時に[形式を指定して貼り付け]−[XMLスプレッドシート]を選べば、数式を含むセル範囲の貼り付けが行える。
こうしたデメリットは理解しておいた方がよい。もちろん、「巨大なブックを複数開くことはない」「ブック間でのコピー&ペーストは最低限あるいはほとんど使わない」といった使い方であれば、個別プロセスで起動するメリットがある。なお、「巨大なブック」とは、明確な定義があるわけではないが、数十万行あれば巨大なブックのうちに入る。逆に行や列が1000以下ならば、少なくとも巨大とはいえないだろう。
Excelを個別プロセスで起動するには、大きく2つの方法がある。1つは、Excelの起動オプションを使う方法、もう1つはレジストリを設定する方法だ。
前者は、Excel起動時のコマンドラインオプションを指定して個別プロセスとして起動する方法で、作業によって、単一プロセス、個別プロセスを使い分けることができる。
これに対してレジストリを使う方法は、レジストリエディターを使って設定を変更するだけで、他に何も作業はいらない。これで常にExcelが個別プロセスとして起動するようになる。この場合、[スタート]メニューのアイコンやタイルから起動したExcelも、全て個別プロセスとなる。
ただし、どちらの場合も、Excelの[ファイル]タブやエクスプローラーからブックファイルを指定しての起動は、単一プロセスExcelでの起動となる。
起動オプションやレジストリ設定が意味を持つのは、Excelを起動し、これが動作している間に、別にExcelを起動したときのみだ。最初の起動では、プロセスが1つしか作られないため、どのような方法で起動しても結果は変わらない。
しかし、2回目の起動に関しては、オプション/レジストリ設定により生成されるプロセスに違いが出てくる。このあたりを整理したのが下図だ。
起動オプションやレジストリ設定を使って個別プロセスで起動するには、この仕組みを理解しておき、起動を使い分ける必要がある。個別プロセスとしてExcelを起動するには、起動オプションを付けた特定のタイル(ショートカット)から起動するか、レジストリ設定をした後に普段利用しているExcelのアイコンやタイルから起動する。これ以外の方法では、Excelは単一プロセスのまま動作し続ける。
Excelには、起動オプションがあり、起動時にコマンドラインに「/X」を付けると、Excelは個別プロセスで起動する。この方法を使う場合、Excelの起動方法とそのときのプロセスがどうなるのかを理解する必要がある。
個別プロセスで起動するオプションを使えば、単一プロセスで動作するExcelと別プロセスで動作するExcelを使い分けることができる。しかし、Windows 10では、[スタート]メニューにあるプログラムリストの登録は、同一のプログラムで1つだけというルールがあり、これを回避する必要がある。
Officeのインストール時に作られたExcelタイルに対応するファイルショートカット(.lnkファイル)がユーザーフォルダ以下(%AppData%\Roaming\Microsoft\Windows\Start Menu\Programs)にある。これをコピーしてショートカットを作ってしまうと、[スタート]メニューに同一と判定されて、2つ目以降のタイルが表示されない。
複数のExcelタイルを登録するには、適当な場所にゼロから起動オプションを付けたショートカットを作り、これをタイルとして登録する必要がある。常に個別プロセスで起動させるのであれば、元からあるExcelのショートカットのプロパティを編集して「/X」オプションを付けてもいいが、別に作っておいた方が[スタート]メニューで明確に使い分けができるだろう。このとき、元からあるExcelのタイルと区別できるような名前(ショートカットのファイル名)をつけておく(既にExcelのタイルが存在する場合、タイル名を変えておかないと個別プロセスで起動させるタイルが登録できない)。
レジストリで個別プロセスの起動が設定できるのは、Excel 2013以降のみだ。これ以前のバージョンのExcelはそもそも単一プロセスで起動していないので設定は不要である。
Copyright© Digital Advantage Corp. All Rights Reserved.