[Windows7] Excel, Word を読み取り専用で開くメニューを追加する

この記事は3年以上前に書かれた記事です。情報が古い可能性があります。

Excel のファイル(xlsx など)や Word のファイル(docx など)を右クリックすると「読み取り専用で開く」というメニューが表示されるのだが、これが実は機能しておらず、ふつうに編集可能なモードで開いてしまう(私だけ?)

ということで、ちゃんと読み取り専用で開くメニューをつくる。

Excel の場合

簡単な方法

  1. エクスプローラの「ツール」→「フォルダオプション」→「ファイルタイプ」タブを開く。
  2. ファイルタイプ「Microsoft Excel ワークシート」(拡張子:XLS)を選択して「詳細設定」。
  3. 「新規(&N)」ボタンを押して新しいアクションの編集ダイアログを開く。
  4. 「アクション(&A)」に「読み取り専用で開く(&R)」と入力(分かれば何でもOK)。
  5. 「アクションを実行するアプリケーション(&L)」にエクセルのパスを入力し「/r」スイッチをつける。
    例)”C:\Program Files\Microsoft Office\Office\EXCEL.EXE” /r
  6. 「OK」で設定を確定する。

DDE を使う方法

  1. エクスプローラの「ツール」→「フォルダオプション」→「ファイルタイプ」タブを開く。
  2. ファイルタイプ「Microsoft Excel ワークシート」(拡張子:XLS)を選択して「詳細設定」。
  3. 「新規(&N)」ボタンを押して新しいアクションの編集ダイアログを開く。
  4. 「アクション(&A)」に「読み取り専用で開く(&R)」と入力(分かれば何でもOK)。
  5. 「アクションを実行するアプリケーション(&L)」にエクセルのパスを入力し「/e」スイッチをつける。
    例)”C:\Program Files\Microsoft Office\Office\EXCEL.EXE” /e
  6. 「DDE を使う(&U)」チェックをONにする。
  7. 「DDE メッセージ(&D)」に次のように入力する。
    [open("%1",,True)]
  8. 「アプリケーション(&C)」に「Excel」と入力する。
  9. 「DDE アプリケーションが実行していないとき(&N)」は空白のまま。
  10. 「トピック(&T)」に「system」と入力する。
  11. 「OK」で設定を確定する。

以上の操作は、レジストリエディタで一発登録できる。Office 2000 の場合は、以下をコピーして (適当な名前).reg というファイル名で保存して実行すれば同じ結果が得られる。実行ファイルやレジストリのパスは Office(Excel)のバージョンで若干異なるかもしれないので、そこは適宜変更すること。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\読み取り専用で開く(&R)]

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\読み取り専用で開く(&R)\command]
@="\"C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE\" /e"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\読み取り専用で開く(&R)\ddeexec]
@="[open(\"%1\",,True)]"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\読み取り専用で開く(&R)\ddeexec\Application]
@="Excel"

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\読み取り専用で開く(&R)\ddeexec\Topic]
@="system"

Word の場合

  1. 後述のスクリプトを(適当な名前).vbs としてファイルに保存する。
  2. エクスプローラの「ツール」→「フォルダオプション」→「ファイルタイプ」タブを開く。
  3. ファイルタイプ「Microsoft Word 文書」(拡張子:DOC)を選択して「詳細設定」。
  4. 「新規(&N)」ボタンを押して新しいアクションの編集ダイアログを開く。
  5. 「アクション(&A)」に「読み取り専用で開く(&R)」と入力(分かれば何でもOK)。
  6. 「アクションを実行するアプリケーション(&L)」に以下を入力する。
    wscript.exe “(1 で保存したファイルのパス)” %1
  7. 「OK」で設定を確定する。

上記 1 の vbs は以下の通り。

Dim fileName
Dim wordApp
 
'arguments check
If WScript.Arguments.Count <> 1 Then WScript.Quit
 
'get filename
fileName = WScript.Arguments(0)
 
'start Word
Set wordApp = WScript.CreateObject("Word.Application")
wordApp.Visible = True
 
'read only open
Call wordApp.Documents.Open(fileName,,True)
 
'finalize
Set wordApp = Nothing
WScript.Quit
タイトルとURLをコピーしました