ついでに読み取り専用で開く

「読み取り専用」で開くメニューも追加できます。
このページの以前の説明は間違っていました... 「Excelの起動スイッチの指定で「読み取り専用」で開く指示も可能です。」なんて説明してあったのですが、確かに起動スイッチに「/r」というものが用意されていますが、 前ページのような方法で右クリックメニューにこの「/r」を付けたものを追加しても決して「読み取り専用」にはなってくれません。
その上、シフトを押しながら右クリックした時に現われる「読み取り専用で開く」は元々登録されているのですが、これも「読み取り専用」にはなってくれないものでした。
この状態は現在のバージョンでも変わっていません。

元々登録されている「読み取り専用で開く」を見てみます。
シフトを押しながら右クリックという動作なので気がつかない人も多い(私もその一人)と思いますが、 どのOfficeのバージョンからか判りませんが「読み取り専用で開く」は元々ビルトインされています。

「読み取り専用で開く」を選択
これが普通に動くならこのページは半ば不要になってしまうのですが、実はこれで開くと、

「読み取り専用で開く」を選択
このようにタイトルバーには「読み取り専用」の表示が出ません。

ここからは、レジストリエディタで確認することになります。

レジストリエディタ
前ページにあるように拡張子「.xlsx」の既定は「Excel.Sheet.12」でしたので、そこを確認してみます。
するとこのように「Excel.Sheet.12」の「shell」中に「OpenAsReadOnly」があり、既定が「読み取り専用で開く」になっているので、これだと判ります。

レジストリエディタ
OpenAsReadOnly」の下の「ddeexec」が「DDEメッセージ」でしょうから、これが誤っていることになります。
見やすくすると、

[open("%1",,,,,,,,,,,,,,1,,1)]
となっています。

そして「DDEメッセージ」だけで「読み取り専用」を指定することにしましょう。 ExcelVBAOpenメソッドでは、カッコ内のカンマで区切られている最初の引数が開くワークブックのファイル名(これは「%1」の指定でDDEから渡されます)、2番目がファイル内のリンクの更新の有無、3番目が読み取り専用モードの指定です。 ですから、この3番目に「True」を入れてみます。 また、上記では引数がカンマ区切りで17個分も指定されていて「1」が2個所ありますがよく意味が解りません。そもそも後続の引数は省略可能なはずなので記述上では削除してしまいましょう。

レジストリエディタ
こうなります。
拡大すると、

[open("%1",,True)]
このようになります。

これで登録して、再度「読み取り専用で開く」を実行してみます。

「読み取り専用で開く」の動作
このようにタイトルバーに「読み取り専用」の表示が出るようになりました。
なお、さきほどの「DDEメッセージ」の指定は、

[open("%1",,1)]
True」ではなく、数字の「1」でも問題ないようです。(「True」はゼロ以外の数字全てで代替されます)