argius note

プログラミング関連

Windows7でExcel2010,Word2010の読み取り専用

Windows7でExcel2010,Word2010の読み取り専用

Windows7のExcel2010では、WindowsXPのExcel2003のときと読み取り専用の設定方法が少し変わっています。
なお、WindowsVista、Excel2007、Word2007は手持ちが無いので分かりません。ご了承ください。


(注:時間がないので走り書き。あとで整理するかも。)
追記(2014-06-06): 整理しました。

Windows7では、拡張子ごとの設定を自由に変更できなくなってしまいました。
なのでregeditだけで変更することになります。

Excel2010の設定

Excel2010(Excel2007から?)では、ファイルを開いてから読み取り専用に変更できるようになりました。
クイックアクセスツールバーの「読み取り専用の設定/解除」(名前が探しにくい...)を使うと、ファイルを開いた状態で切り替えができます。



従来どおり、開いたときに読み取り専用にしたい場合は、regeditで下記の箇所を修正してください。(regeditは危険なので無闇に触らないように注意!)
基本的にはExcel2003以前と同じです。Shiftキーを押しながら右クリックすると、「読み取り専用で開く」が出てきますが、実行しても読み取り専用になってくれません。「読み取り専用で開く」コマンド自体は登録されていて、この設定を一部変更すれば、読み取り専用が機能するようになります。



拡張子xls(Excel97-2003ブック)のレジストリーキーは、HKEY_CLASSES_ROOT\.xls\Excel.Sheet.8ですが、これはエイリアス(?)になっていて、実体はHKEY_CLASSES_ROOT\Excel.Sheet.8にあります。同様に、拡張子xlsx(Excel2007-ブック)は、HKEY_CLASSES_ROOT\.xls\Excel.Sheet.12HKEY_CLASSES_ROOT\Excel.Sheet.12です。数字だけ変わります。
以下では、xlsx(Excel.Sheet.12)を変更する場合を説明します。xlsの場合はExcel.Sheet.12のところをExcel.Sheet.8に変えて設定してください。


また、拡張子xlsxの方だけ設定しても、拡張子xlsの方には反映されませんので注意してください。



「読み取り専用で開く」は、HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnlyに設定があります。
HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnly\ddeexecの(既定)の値を、[open("%1",,,,,,,,,,,,,,1,,1)]から[open("%1",,1,,,,,,,,,,,,1,,1)]に変更します。引数の3番目に1(またはTrueでもOK)を設定するということみたいです。
これで読み取り専用自体は有効になります。


いちいちShiftキーを押さなくてもメニューに「読み取り専用で開く」を出したいなら、さらに以下の設定をします。
HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnly\ddeexecの"Extended"を無効にすれば常に出るようになります。消すのが怖ければ、名前を"_Extended"などに変更してもかまいません。


Word2010の設定

拡張子doc(Word97-2003文書)のレジストリーキーは、HKEY_CLASSES_ROOT\.doc\Word.Document.8ですが、これはエイリアス(?)になっていて、実体はHKEY_CLASSES_ROOT\Word.Document.8にあります。同様に、拡張子docx(Word2007-文書)は、HKEY_CLASSES_ROOT\.doc\Word.Document.12HKEY_CLASSES_ROOT\Word.Document.12です。数字だけ変わります。
以下では、docx(Word.Document.12)を変更する場合を説明します。docの場合はWord.Document.12のところをWord.Document.8に変えて設定してください。


また、拡張子docxの方だけ設定しても、拡張子docの方には反映されませんので注意してください。


regeditで下記の箇所を修正してください。(くれぐれも、regeditは危険なので無闇に触らないように注意!)

「読み取り専用で開く」は、HKEY_CLASSES_ROOT\Word.Document.12\shell\OpenAsReadOnlyに設定があります。
Wordの方は、初期状態ではddeexecが未設定のため、新規追加する必要があります。OpenAsReadOnlyを右クリックして、新規→キーを選択し、名前をddeexecとします。この(既定)の値に、[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0,.ReadOnly=1]を設定します。


いちいちShiftキーを押さなくてもメニューに「読み取り専用で開く」を出したいなら、さらに以下の設定をします。
HKEY_CLASSES_ROOT\Word.Document.12\shell\OpenAsReadOnly\ddeexecの"Extended"を無効にすれば常に出るようになります。消すのが怖ければ、名前を"_Extended"などに変更してもかまいません。