連載
» 2020年05月11日 05時00分 公開

Tech TIPS:【Excelトラブル解決】別のExcelウィンドウを選べない

Excelで複数のブックを開いて作業をしていると、別のExcelのウィンドウが選択できないことがある。これは、別のブックで[セルの書式設定]などのダイアログを表示させているためだ。別のブックでダイアログが表示された状態でも作業が行えるようにする方法を紹介しよう。

[塩田紳二,著]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Office 2013/2016/2019/365


Excelは単一のプロセスで動作している Excelは単一のプロセスで動作している

 「Microsoft Excel(エクセル)」で複数のブックを使っているとき、ウィンドウを選択しようとしても、音が鳴ってウィンドウを選べない経験をしたことはないだろうか? これは、他のウィンドウで[セルの書式設定]などのモーダルダイアログを表示させているためだ。モーダルダイアログは、これを閉じない限り、他のウィンドウでは操作を行うことができないからだ。

 Excelでは、Excel 2013から、単一プロセス(シングルプロセス)での起動が標準となり、何も設定しなければ、常にこういう状態となる。このため、古くからのExcelユーザーにはこの挙動に慣れないものを感じるだろう。

 これを解消するには、Excelのブックを個別のプロセスで起動するとよい。ただし、デメリットもあるので、単一プロセスと個別プロセスを使い分ける必要がある。ここでは、Excelを個別プロセスで起動する方法や使い分けの方法を解説する。

個別プロセスのメリット/デメリット

 簡単に言うと、標準状態では、Excelというプログラムはウィンドウを幾つ開いても1つの「プロセス」だけがメモリ内に置かれている状態となる。つまり、単一のExcelプロセスが、全てのウィンドウを表示させている。

 このとき、[セルの書式設定]などのモーダルダイアログを表示させると、他のウィンドウでは、モーダルダイアログを閉じない限り操作が行えなくなる。そもそもモーダルダイアログとは、実行する処理がアプリケーションの状態に大きく影響し、その間に他の処理を行ってしまうとアプリケーション内部の状態を正しく保てなくなるような場合に利用するものである。分かりやすい例は、Excelの「オプション」設定だ。Excelのオプション設定は、設定項目によっては、起動している全てのブックウィンドウに影響を与えてしまう。

 これを回避するには、Excelを個別プロセスで起動すればよい。そうすれば、たとえ他のExcelウィンドウでモーダルダイアログを開いていても、別のプロセスのため影響を受けずに作業が続けられる。

 ただ、Excelを個別プロセスで起動する場合、メモリ消費量が増加する。また、別プロセスとなるExcelウィンドウ間の貼り付けでは、コピー&ペーストにWindows OSが用意したクリップボード機能を使うため、セル内容によっては下画面のような警告ダイアログが表示される。この場合、数式はコピーされず、その結果が値としてコピーされてしまうことになる。

異なるプロセスでコピー&ペーストを実行した際に表示される警告ダイアログ 異なるプロセスでコピー&ペーストを実行した際に表示される警告ダイアログ
別プロセスのExcelにコピー&ペーストを行おうとするとこのような警告ダイアログが表示される。

 式のままセルを貼り付けたい場合には、貼り付け時に[形式を指定して貼り付け]−[XMLスプレッドシート]を選べば、数式を含むセル範囲の貼り付けが行える。

式のままセルを貼り付ける方法(1) 式のままセルを貼り付ける方法(1)
別プロセス間で数式を含むセルをコピー&ペーストする場合、[形式を選択して貼り付け]を選択する。
式のままセルを貼り付ける方法(2) 式のままセルを貼り付ける方法(2)
[形式を選択して貼り付け]ダイアログで[XMLスプレッドシート]を選ぶと、数式を含んだセルを貼り付けることができる。

 こうしたデメリットは理解しておいた方がよい。もちろん、「巨大なブックを複数開くことはない」「ブック間でのコピー&ペーストは最低限あるいはほとんど使わない」といった使い方であれば、個別プロセスで起動するメリットがある。なお、「巨大なブック」とは、明確な定義があるわけではないが、数十万行あれば巨大なブックのうちに入る。逆に行や列が1000以下ならば、少なくとも巨大とはいえないだろう。

Excelを個別プロセスで起動する

 Excelを個別プロセスで起動するには、大きく2つの方法がある。1つは、Excelの起動オプションを使う方法、もう1つはレジストリを設定する方法だ。

 前者は、Excel起動時のコマンドラインオプションを指定して個別プロセスとして起動する方法で、作業によって、単一プロセス、個別プロセスを使い分けることができる。

 これに対してレジストリを使う方法は、レジストリエディターを使って設定を変更するだけで、他に何も作業はいらない。これで常にExcelが個別プロセスとして起動するようになる。この場合、[スタート]メニューのアイコンやタイルから起動したExcelも、全て個別プロセスとなる。

 ただし、どちらの場合も、Excelの[ファイル]タブやエクスプローラーからブックファイルを指定しての起動は、単一プロセスExcelでの起動となる。

 起動オプションやレジストリ設定が意味を持つのは、Excelを起動し、これが動作している間に、別にExcelを起動したときのみだ。最初の起動では、プロセスが1つしか作られないため、どのような方法で起動しても結果は変わらない。

 しかし、2回目の起動に関しては、オプション/レジストリ設定により生成されるプロセスに違いが出てくる。このあたりを整理したのが下図だ。

Excelを複数起動した際のプロセスの関係 Excelを複数起動した際のプロセスの関係
個別プロセスで起動する設定をすると、その後起動されるExcelは別々のプロセスとなる一方で、単一プロセスのまま複数ブックを開くプロセスも混在することができる。

 起動オプションやレジストリ設定を使って個別プロセスで起動するには、この仕組みを理解しておき、起動を使い分ける必要がある。個別プロセスとしてExcelを起動するには、起動オプションを付けた特定のタイル(ショートカット)から起動するか、レジストリ設定をした後に普段利用しているExcelのアイコンやタイルから起動する。これ以外の方法では、Excelは単一プロセスのまま動作し続ける。

Excelを個別プロセスで起動できる条件 Excelを個別プロセスで起動できる条件
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のタイルを作成する(1) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(1)
適当なフォルダで空いているところを右クリックし、メニューで[新規作成]−[ショートカット]を選択する。
[スタート]メニューに個別プロセスとするExcelのタイルを作成する(2) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(2)
[ショートカットの作成]ウィザードが起動するので、「項目の場所を入力してください」の入力ボックスに「EXCEL.EXE」のフルパスを指定する。EXCEL.EXEのありかを確認するには、Excelを起動してからタスクマネージャーの[プロセス]タブで「Microsoft Excel」のプロセスを右クリックして、[ファイルの場所を開く]を選択すればよい。最後に、作成したショートカットの名前を「Excel」以外、例えば「Excel(別)」などとしておく。前述のように同名のタイルは表示されないからである。
[スタート]メニューに個別プロセスとするExcelのタイルを作成する(3) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(3)
作成したショートカットを右クリックして、メニューから[プロパティ]を選択する。
[スタート]メニューに個別プロセスとするExcelのタイルを作成する(4) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(4)
プロパティが開いたら、「リンク先」のリンクの最後に半角スペースを入れて、「/X」オプションを追加する。
[スタート]メニューに個別プロセスとするExcelのタイルを作成する(5) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(5)
再びEXCELのショートカットを右クリックして、[スタートメニューにピン留めする]を選択する。
[スタート]メニューに個別プロセスとするExcelのタイルを作成する(6) [スタート]メニューに個別プロセスとするExcelのタイルを作成する(6)
[スタート]メニューに既存の単一プロセスで起動するショートカットに加えて、個別プロセスで起動するタイルが作成できる。既にExcelのタイルが存在する場合、新たに追加するタイルは、「Excel2」といったように別の名前にしておくこと。

レジストリで設定する方法

 レジストリで個別プロセスの起動が設定できるのは、Excel 2013以降のみだ。これ以前のバージョンのExcelはそもそも単一プロセスで起動していないので設定は不要である。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。