Excel共存インストールの標準の切り替え

Excelは、ひとつのパソコンの中に、複数のバージョンを共存させてインストールすることができます。
しかしながら、それらを使い分けることは意外と難解です。
私の知っている方法はいくつかあるけど、面倒だったりします。
もっと簡単にできないかと思って、いろいろいじったりすると、何やら、Windowsの動作なのか、Excelの動作なのかわからないけど、理解しがたいところもあって、どうにもならないところがある。

ここで調べて、実は過去にも調べたことがあったのを思い出した。すっかり忘れていたようなものであった。XPに2010をインストールしたときにかんり悩んだことであったが。
結局、そのときにもいい結果は得られていなかったようである。何しろ、DDEとか理解していないことがからんでくるし、レジストリにも記録されているのだが、単純にそれだけでもなさそうだったり、とにかく不可解なのだ。

以下、今回わかったことまでを、簡単にまとめておく。
(絵を添えて説明するのがわかりやすいのだが、テキストベースで簡単に書きたいので、とりあえず文字オンリーで書いてみる)


WindowsXPの場合
 環境によっても行いが異なってくるので、まずはWindowsXPの場合から。
ExcelはXpと2010の共存のケースで行っている。

<インストール>
 これは他にも解説してあるページがたくさんある。
 基本的に、古い方のバージョンの方から順にインストール
 インストールする場所はフォルダーを分けておくのがよい。
 (後のをインストールする前に、前のショートカットが上書きされないように、バージョンがわかるように名称を変えておくとよい、とかの工夫も)

◆≪共存利用の仕方(その1)≫
1.<使い分けの仕方>
 エクスプローラからxlsファイルをダブルクリックして開くとき、インストールをした状態のときなら、最後にインストールしたバージョンのExcelが起動するはず。
 それと違う方のEXCELを起動する方法としては、
 ・スタートメニューからEXCELをそのバージョン用のショートカットから起動する。
  (ブランクのブックが、そのバージョンで起動する)
  その状態で、エクスプローラからxlsファイルをダブルクリックすると、そのときに開いているバージョンのEXCELによってブックが開かれる。

2.<複数バージョンのEXCELを同時に起動することも出来る>
 EXCELが起動中の状態において、スタートメニューのExcelのショートカットからExcelを起動すると、それまで起動しているExcelとは別の空間(というか、インスタンス)として新たなExcelが立ち上がる。この場合、前のバージョンとは違うバージョンのExcelを起動することも可能なのである。

3.<Excelを並行動作も出来る>
 ↑のように別のインスタンスとしてExcelを別の空間で立ち上げると、それぞれが独立して処理を実行することができる。
 通常は(ひとつのインスタンスの中では)、あるブックの処理を行っている間には他の処理は実行できない。これ自体がシングルタスクのようなイメージで、例えばマクロ処理を行っているとかワークシートの計算処理を行っているとかのときに、他のブックやシートに関する処理を並行して行うことは出来ないのである。
 ところが、これを↑のように、別のインスタンスとして起動すると、それぞれ相手の状態に関係なく自分の側の処理が実行可能になる。つまり多重処理が可能になる。

4.<複数インスタンスExcelが動作中にエクスプローラから起動するとどうなるか>
 これは画面がより前面にある方に対してExcelブックが起動される。
 だからExcelのxpで起動したものと、2010で起動したものの二つのインスタンスが起動中のときに、あらたに起動するexcelをxpとして起動したければ、xpの画面を全面に出してきておいて、エクスプローラからダブルクリックすると、そのより前面に位置するxpの側でブックが起動される。

◆≪共存利用の仕方(その2)≫
<標準起動されるのを切り替えする>
WindowsXPの場合は、エクプローラの「ツール」−「フォルダオプション」−「ファイルの種類」から拡張子とプログラムの対応の関係を操作する。
Windows7の場合は、この「ファイルの種類」に相当するものがないため、この方法は採れない)

以下、手順を示す。

1.「登録されているファイルの種類」から、「拡張子」が"XLS"のエントリを選択する。
  (アルファベット順なので、一番下の方、縦スクロールバーで下げて行って見つける。)
  (また「拡張子」の列幅が狭くて文字が十分に見えないので、境界をつまんでずらして幅を広げて見る)

2.その画面の下側に、「詳細設定」のボタンが出るのでクリックする。
  (場合によっては、「元に戻す」となっているケースがあるかも。そのときはそれをクリックすると「詳細設定」のボタンに変わるかも)

3.「アクション」窓の中に、”開く”を探し、選択する。
  (濃い字になっているはず。これが標準、つまりエクスプローラでxlsファイルをダブルクリックしたときに行われることを定義している)

4.その右側の「編集」ボタンをクリックする。
   「アクションの編集の画面」になる。

5.上から二番目の窓「アクションを実行するアプリケーション」の中を変更する。
  ≪"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"≫」
  とか、なっている。(Excel2010の場合。また、文字列の最後には何か付加されているかも))

 それを、XPを起動させたいなら、次のように書き換える。
  ≪"C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /dde %2≫」
  (ボタン「参照」をクリックして希望のバージョンのExcelを指定するのが正しいが)

  ※1.最後に” /dde %2”と付加すること。
    (おまじないようなものだが、何も付けない方がいいのだが、なぜか勝手に”%1”が付けられてしまい、そうすると、起動時に同じファイルを2度開こうとしてしまうのである。その下の方にある、「DDEメッセージ」窓の中に”[open("%1")”]”があって、この”%1”と同じ役目で、どちらもファイルを開くしてになってダブルようなのである。苦肉の策で解決策となったのであるが、”%2”で誤魔化したもの。これによってダブルで開くことは避けられた。)
  ※2.参考までに、「DDEメッセージ」窓での指定を消去すれば二重起動は避けられるのだが、挙動が違ってくるので意図しての使い道はあるけど。
   ここに指定がある場合は、二つ目以降のブックの起動においては、同じエクセル空間で実行されることである。ここの指定がない場合は独立のインスタンスの空間として起動されるのである。
  (Excel終了の×ボタンを押したとき、通常はその中のブックのすべてが終了となるが、これが別インスタンス空間の場合は一緒に終了とはならない。)


◆≪共存利用の仕方(その3)≫
<標準起動を切り替えを楽にする>

↑の「(その3)」では、起動する設定を書き換える方法を紹介したが、書換よりは、あらかじめ準備したものを指定するだけの方法である。

手順の1〜2は↑と同じで、
3.「アクション」窓の右側にある、「新規」ボタンをクリックする。
  すると、「新しいアクション」の画面が表示されるので、
   ・「アクション」窓には、動作を。例えば、”XPで開く”とか。
   ・「アクションを実行するアプリケーション」には、前の手順5で示したように、
    たとえば、  ≪"C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /dde %2≫」
    のように指定する。
   ・「DDEを使う」にチェックを入れる。と画面が広がり、4つの入力窓が現れる。
   ・ここに、元からあった”開く”のアクションを見たときと同じ内容に設定する。
     「DDEメッセージ」  ← ”[open("%1")]”
     「アプリケーション」 ← ”EXCEL
     「DDEアプリケーションが〜」 ← (ブランク)
     「トピック」     ← ”System”

4.「OK」ボタンをクリックする。
  これで、「アクション」窓には、元々あった”開く”と、後から作った”XPで開く”があるはず。

5.標準アクションを指示する。
  エクスプローラに表示されたxlsファイルをダブルクリックしたときに行われる動作を標準アクションとして、これは以下の操作により変更することが出来る。

  この「アクション」窓の右にはボタンが縦に並んで、下側に、「既定に設定」があるので、
  「アクション」窓の中のものから標準アクションにしたいものをクリックして選択した状態で、「既定に設定」のボタンをクリックする。
  →すると、そのとき選択していたアクションの文字が太字で黒くなる。(これが標準、つまり既定であることを示している)

6.以上、「OK」して抜ける。



◆≪共存利用の仕方(その4)≫
エクスプローラから起動時に選択する>
これは↑の「(その3)」で、アクションを追加することによって可能となる方法である。

エクスプローラでxlsファイルを指定して起動する際に、ダブルクリックではなく、右クリックして、そのとき表示されるポップメニューの中に、アクションとして付けた名前が表示されているので、それを選んでクリックすることにより、Excelの環境バージョンを選択することが可能である。
(新規に追加したアクションだけでなく、元からの”開く”も、区別の付けやすい、わかりやすい名前に変更しておくと尚よいだろう)


★補足、余談
(1)その4で紹介した方法であるが、最初のブックを開くときにだけ選択可能のもの。
   まだEXCELが起動していないときに、初めて起動するときにどの環境かを指定可能なものである。
 2番目以降のEXCELブックを開くときは、すでに開いているEXCELのインスタンスに合わせられるようである。
  →これは、以降は、前に説明した「(その1)」の項番4の行いが適用されるようである。
   つまり、2番目以降は、どのアクションを指定するかではなく、そのときに動作しているインスタンスに合わせられることである。より前面に表示されているインスタンスに。
   (同じように、項番2および3の行いが適用される)

(2)Excel2010側の複数ブックの閉じ方が変
   起動中のインスタンスに従属することは確かなのだが、これらをまとめて閉じることが出来ない。上側の×ボタンを押してもそのブックが閉じるだけなのである。どうしてだろう?こうだったのかな〜?なんて。

(3)レジストリとの関係がしっくりこない、わからない
  どうも連携しているようで、一部合ってないようで!
  内容をサンプルとして掲載するか。
ここではちょっとだけ抜粋。

−−−−−−−−−−−−−−−−−−−−−−

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\XPで開く]

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\XPで開く\command]
@="\"C:\\Program Files\\Microsoft Office\\Office10\\EXCEL.EXE\" /dde"
"command"=hex(7):79,00,6b,00,47,00,5e,00,56,00,38,00,21,00,21,00,21,00,21,00,\
21,00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,45,00,58,00,43,\
00,45,00,4c,00,46,00,69,00,6c,00,65,00,73,00,3e,00,56,00,69,00,6a,00,71,00,\
42,00,6f,00,66,00,28,00,59,00,38,00,27,00,77,00,21,00,46,00,49,00,64,00,31,\
00,67,00,4c,00,51,00,20,00,2f,00,64,00,64,00,65,00,00,00,00,00

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\XPで開く\ddeexec]
@="[open(\"%1\")]"

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\XPで開く\ddeexec\Application]
@="Excel"

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\XPで開く\ddeexec\Topic]
@="system"

−−−−−−−−−−−−−−−−−−−−−−

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\Open]
@="開く(&O)"

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE\" /dde"
"command"=hex(7):79,00,6b,00,47,00,5e,00,56,00,38,00,21,00,21,00,21,00,21,00,\
21,00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,45,00,58,00,43,\
00,45,00,4c,00,46,00,69,00,6c,00,65,00,73,00,3e,00,56,00,69,00,6a,00,71,00,\
42,00,6f,00,66,00,28,00,59,00,38,00,27,00,77,00,21,00,46,00,49,00,64,00,31,\
00,67,00,4c,00,51,00,20,00,2f,00,64,00,64,00,65,00,00,00,00,00

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\Open\ddeexec]
@="[open(\"%1\")]"

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\Open\ddeexec\Application]
@="Excel"

[HKEY_CLASSES_ROOT\Applications\EXCEL.EXE\shell\Open\ddeexec\Topic]
@="system"

−−−−−−−−−−−−−−−−−−−−−−
   ??? ”2010で開く”の名前は何処にあるのだろう?
    レジストリを検索したが見つからない!はて?
    (システム再起動したら出てくるのかな?)

いやいや、やはり私のミスだった!
レジストリの検索ミスだった!

「これっ!」と思ったのは、実際にはそれではなかった。もっと先の方に別のがあった。
そこには、ちゃんと”2010で開く”の名前もあった。
(検索では初めはキー値だけの検索だったり、・・)
(キー名は”Open”と変わっていなかったし。で、見つからなかったことも。)

−−−−−−−−−−−−−−−−−−−−−−

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open]
@="2010で開く(&O)"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE\" /dde %9"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec]
@="[open(\"%1\")]"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec\Application]
@="Excel"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec\Topic]
@="system"

−−−−−−−−−−−−−−−−−−−−−−
ちゃんと名前の設定があって、アクション内容も反映されている。
(当然だよね。レジストリ以外に引き継ぐものなんてないから)
そしてこの内容をいじったところ、ちゃんと内容として反映もされることを確認した。
レジストリで変更するなら、勝手に”%1”が付くこともなく、綺麗に設定できた。

<1>次のように変更
=========
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE\""
=========

と出来た。

(※レジストリ内でもう一か所、同じ内容のところがあったが、片方の内容を直したところ、もう一方の方はそれと同じに直っていた。連動されているようだ。)

<2>(こちらは勝手に連動で変わっていた)
=========
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Sheet.8\shell\Open\command]
@="\"C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE\""
=========

−−−−−−−−−−−−−−−−−−−−−−


(4)同様なことをWindows7環境でも試してみたが、また調整中ではあるが、以下のようだったり変な感じ。
  仕方なくスタートメニューからExcel2010を起動した中にもかかわらず、エクスプローラからの起動は2003環境となってしまう。(こちらは2003vs2010なので)
  仕方なく開いている2010環境に、エクスプローラからxlsファイルをドラッグして起動させる。そして複数ブックを起動してまとめて終了させようとするも、これまた成らず。
(どうも環境がみんなまともじゃないかも知れないから。もうがたがたなので、この事象は正しいとは言い難いのだが、とりあえず、自分のメモとして、まずは記しているもの。だんだんわからなくなってしまう!)

 ※あ、そうそう、エクスプローラからドラッグする、なんてのも指定した環境でブックを開くひとつの手段である。