Excel 2003 と Excel 2007 を共存させる場合の留意点
お仕事で扱うデータのカラム数やレコード数がどうにも Excel 2003 で扱える範囲を超えるものが増えてきました。Excel 2003 以前のバージョンでは 256 カラム × 65536 行までのデータしか扱えない仕様がなんとも重くのしかかってきます。ってことで、Office 2007 を購入して Excel 2007 をインストールしました。今までは部内の数名を人柱にして、Excel 2003 を Excel 2007 にアップグレードしてもらって、なんとなーく不都合でてるなー程度に思っていたのですが、いざ自分がインストールする場面になるとニヤニヤ眺めているだけでは逝かなくなりました。
なんといっても Excel 2003 と Excel 2007 は VBA の動作が何ともしがたいほど違ってます。2003 で動いていた VBA ツールが 2007 では動作しないなんてざらです。いや、ほとんどが現状動いていない。
というわけで、仕方なく Excel 2003 環境と共存して 2007 をインストールする方法を取らざるを得ないです。一応共存インストールオプションがあります。
デフォルトのアップグレードをしてしまうと、旧バージョンの Office をすべて削除して上書きされます。インストール済みの Office アプリケーションを残す場合は、「ユーザ設定」→「削除するアプリケーションを指定する」で、削除しない Office アプリケーションを選択してアップグレードします。この設定は、2007 の初回インストール時にのみ有効なので注意が必要です。
さて、問題はここから。
どうやら Office 製品は共存インストールしたとしても、最後にインストールしたバージョンが優先的に扱われるんです。たとえば、ファイルの関連づけで .xls が Microsoft Office Excel に関連づけられていても起動するのは Excel 2007 で、
参照ボタンから Office11\Excel.exe つまり excel 2003 を指定しても関連づけを変更できません。
その他、スクリプトとかで Office OLE オブジェクトを生成するときもわざわざバージョンを指定しても全く無視されて、2007 が起動してきやがる。
Set excel = CreateObject("Excel.Application.11"); // VBA とか var excel = new ActiveXObject("Excel.Application.11"); //JavaScript + ActiveX
いろいろ調べていたら、Microsoft のサイトに情報がありました。[INFO] 複数のバージョンの Office がインストールされている場合の Office オートメーションについて
まずは結論から。Excel 2003 を優先的に扱いたいのであれば、以下のコマンドを DOS シェルから実行する。
"C:\Program Files\Microsoft Office\OFFICE11\excel.exe" /regserver
逆に Excel 2007 優先に再度変更したくなったら
"C:\Program Files\Microsoft Office\OFFICE12\excel.exe" /regserver
を実行すればOKです。インストール CD が求められますが、これで勝手に上書きされたレジストリを強制的に指定のバージョンで上書きすることが可能です。
最後に、なんでこんな事になるのか MS のサイト情報を引用しておきます。絶対設計がおかしいよ!
概要
詳細
HKEY_CLASSES_ROOT\Excel.Application\CLSID
デフォルト値 : {00024500-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer32
デフォルト値 : C:\PROGRA~1\MICROS~1\Office\EXCEL.EXE /automation
COM は、PROGID から CLSID までのレジストリ キーの値によって Excel の実行可能ファイルのインストール場所を確認し、そのファイルでオートメーションを開始できます。
複数バージョンの Office をインストールしており、それらの Office サーバーのいずれかでオートメーションを使用する場合、読み込まれるバージョンは、レジストリ内のこれらの設定によって決まります。ほとんどの場合、最後にインストールされたバージョンが、オートメーションで読み込まれるバージョンです。ただし、Word の動作は他の Office アプリケーションとは異なります。それぞれの Office オートメーション サーバーの動作の違いについて、以下に説明します。
Access、Excel、および PowerPoint の 97、2000、および 2003
Word 97
Word 2000、2002、および 2003
その他の注意点
コメントやシェアをお願いします!
ふにふに
さきほど投稿した、ふにふにです。
結局、解決しました。
"C:\Program Files (x86)\Microsoft Office\OFFICE12\excel.exe" /regserverの
最後の方をワードに変えて、(中略)winword.exe" /regserverにすることで、
インスト再構成の画面になり、結構待たされる場面になりました。
CDを要求されることはなかったですが、とりあえずレジ更新されたような気配でしたので
おまじないでPC再起動後に、とりあえずデスクトップ上のエクセルファイルをWクリックにて
開くとexcel2007で開いてくれたので、もしやと思い教材CDから起動したらば、
おかげさまでExcel2007で開きました。無事に2007デフォになったようです。
お騒がせしてすみませんでした。
ふにふに
お世話になります。当方、Win7(64bit)環境に32bitアプリとしてOffice2007と2010を
共存させております。(2007から先入れして、以前のバージョンを残すで2010を後入れしました)
ちょっと事情があり、MOS試験のExcel2007の試験を受けなくてはならず、
FOM出版の教材に付属するMCAS2007Excelの模擬試験が収録されたCD-ROMを
起動すると(当然なんでしょうけれど)Excel2010が起動してしまいます。
つまりExcel2010を使って模擬試験を受けなくてはなりません。
そこでデフォルトで起動するExcelを2007にしたくて、貴サイトにある
"C:\Program Files (x86)\Microsoft Office\OFFICE12\excel.exe" /regserver
のコマンドを発行すると、CDを要求される動きが当方では全く見られず、
ただ単に、Excel2007が普通に起動するだけです。
よって、おそらくレジストリの書き換えまでは行ってないと思ってます。
もしよろしければ、上記コマンド発行後にインストールCDが要求されるような
設定があるなら教えていただけますでしょうか。
リッチーエリックボーンペイジリックス
助かりました。ありがとうございます。
私の場合windows 7 64bitなので
Excel 2003 と Excel 2007を併用していて
2003を優先したかったので
"C:\Program Files (x86)\Microsoft Office\OFFICE11\excel.exe" /regserver
上記で、ファイル名を指定して実行にて解決しました♪
ラブゾンビ長谷川
探していた情報ド真ん中です。助かりました。
t98907
ステキ記事でした。わかりやすい!
じゅんこ
皆様
初歩的な質問で恐縮です。。
"C:\Program Files\Microsoft Office\OFFICE11\excel.exe" /regserver
の制御を一度やめたい場合、どのように対処するのがよろしいのでしょうか??
※Excel2007にツールを導入しようとすると、Excel2003の方にインストールされ、
Excel2007もメッセージが出てしまうようになりました・・・
通りすがり
Word2003と2007を共存している時に、前回と違うバージョンを起動する度に
インストーラーが立ち上がるのは何とかできないもんかと思っていたのですが、
回避策はなさそうですね。
参考になりました。
知識不足者
検索でhitしました。MSのhelpより解かりやすいです。
助かりました。
ありりん
クラスID共有でしたか・・・、残念です。。。