argius note

プログラミング関連

Excel 読み取り専用で開く

追記(2012-06-23):Windows7+Excel2010についてのエントリを書きました。Windows7でExcel2010,Word2010の読み取り専用

追記(2010-03-16):下記ページがこのエントリの足りないところ含めほぼ全て説明しておられるのでご覧下さい。


ここではメモとして最短手順を書いておきます。レジストリの編集を伴いますので十分注意してください。

  • 当方の環境:Windows XP professional SP2 + Office 2003
  • 2010-03-16版
    1. 「DDEメッセージ」に"[open("%1",,True)]"を設定("True"は"1"でも良い)
      1. エクスプローラのメニュー「フォルダオプション」→「ファイルの種類」タブの「登録されているファイルの種類」から"xls"を選択して「詳細設定ボタン」を押す。
      2. 「ファイルの種類の編集」ダイアログの「アクション」の"読み取り専用で開く"を選択して「編集」ボタンを押す。
      3. 「アクションの編集」ダイアログの「DDEメッセージ」に設定して「OK」ボタンを押す。
    2. 再度「編集」ボタンを押して「アクションの編集」ダイアログを開き、「アクションを実行するアプリケーション」の文字列をコピーなどで取得しておく。
    3. レジストリエディタを起動し、前項の取得した文字列で検索して見つかった値の"%1"を削除する。
      • レジストリエディタのメニュー「編集」→「検索」で検索対象は「データ」のみチェックして検索する。
      • "%1"を消さないとDDEの指定と重複するので2回開く動作が発生してしまう。

(追記2010-03-16ここまで 以下、元の記事)


これまで、Excelを読み取り専用で開く場合、コンテキストメニューの「新規作成」を代用していました。でも、これって無駄が多いのでは? 普通に「読み取り専用」で開けないのだろうか? と疑問だったので、調べてみました。

自力で挑戦

まず、フォルダオプション-ファイルの種類から、"xls"を探して詳細設定ボタンを押します。すると、「読み取り専用で開く」というアクションが存在しています。なぜコンテキストメニューで開かないのかは分かりません。レジストリで無効にしてるとかでしょうか。
追記(2008.11.26):「実行する〜」の方は、"%1"でなく"%*"にしました。

// アクション"読み取り専用で開く"の元の設定
〜実行する〜: "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /h /e %*
DDEメッセージ: [open("%1",,,,,,,,,,,,,,1,,1)]
アプリケーション: Excel
〜実行していないとき: (blank)
トピック: system

このアクションには、ニーモニックが無いので、それを足してみたところ、コンテキストメニューに出てきました。早速、使ってみると.....見事に、読み取り専用になりません!!!
追記(2008.10.29):shift+右クリックでコンテキストメニューを開くと「読み取り専用〜」が出てくるそうです。もちろん、読み取り専用になりません...
追記(2008.10.30):あと、ニーモニックはreadonlyなので最初は(&R)にしましたが、プロパティ(R)とかぶるので、今は無しにしています。

他力で...

早々にあきらめて、検索。やはり、情報はたくさんありますね。
まずは、起動オプション"/r"をつけると、読み取り専用になるようです。ところが、これでもダメ。DDEがあやしいとにらんだところ、それらしき情報が見つかりました。
結果はこうなりました。(書いていない項目はそのまま)

  • 追記(2009.06.12)
    • Windows Updateなどの更新のインストール後に設定が戻ってしまいます。
    • 最後の"%1"は無いほうが良いかも知れません。
// 変更箇所だけ
〜実行する〜: "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /h /e /r %1
DDEメッセージ: [open("%1",,True)]

さらに、ロックされているときのダイアログを出したくない対応という情報もありましたが、これは必要ないのでやってません。