MS Excel (Word)を読取専用で開く設定 for Windows7 ― 2010/07/03 12:18
Excel2003、2007を読み取り専用で開きたい。
ネットワーク共有ドライブ上にファイルがあって、ちょっと中身をのぞきたいだけの時に、書き込みロックしてしまうのは面倒くさいですよね。
エクスプローラでExcelファイルに対して、Shift+右クリック で表示されるメニューの中に「読み取り専用で開く」はあるんですが、実際に開いても読み取り専用になってくれません。
XPの時はエクスプローラのファイル関連付け設定から簡単に出来たんですが、Windows7では該当する機能が無くなってしまったようですね。
無いものはしょうがない。 レジストリエディタの出番のようです。 WinNT4とか2000に戻った気分ですw
ネットワーク共有ドライブ上にファイルがあって、ちょっと中身をのぞきたいだけの時に、書き込みロックしてしまうのは面倒くさいですよね。
エクスプローラでExcelファイルに対して、Shift+右クリック で表示されるメニューの中に「読み取り専用で開く」はあるんですが、実際に開いても読み取り専用になってくれません。
XPの時はエクスプローラのファイル関連付け設定から簡単に出来たんですが、Windows7では該当する機能が無くなってしまったようですね。
無いものはしょうがない。 レジストリエディタの出番のようです。 WinNT4とか2000に戻った気分ですw
Excel2003ファイルの場合
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。
キー: 「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly\ddeexec」
変更前の値: open("%1",,,,,,,,,,,,,,1,,1)
変更後の値: open("%1",,True,,,,,,,,,,,,1,,1)
※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。
キー: 「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly\ddeexec」
変更前の値: open("%1",,,,,,,,,,,,,,1,,1)
変更後の値: open("%1",,True,,,,,,,,,,,,1,,1)
※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。
Excel2007ファイルの場合
キー名の途中を「Excel.Sheet.8」 → 「Excel.Sheet.12」 に変えてやればいけます。
「HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnly\ddeexec」
キー名の途中を「Excel.Sheet.8」 → 「Excel.Sheet.12」 に変えてやればいけます。
「HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\OpenAsReadOnly\ddeexec」
Word2003ファイルの場合
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。
キー: 「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly\ddeexec」
変更前の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0]
変更後の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.ReadOnly=1]
※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。
以下のキーに読み取り専用で開く時の(規定)値が入っていますので、書き換えます。
キー: 「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly\ddeexec」
変更前の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0]
変更後の値: [AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.ReadOnly=1]
※Shiftを押さなくても、右クリックメニューに「読み取り専用で開く」を表示したい場合は、「HKEY_CLASSES_ROOT\Word.Document.8\shell\OpenAsReadOnly」 にある Extended という値を消せばよいです。
Word2007の場合
キー名の途中を「Word.Document.8」 → 「Word.Document.12」 に変えてやればいけます。
「HKEY_CLASSES_ROOT\Word.Document.12\shell\OpenAsReadOnly\ddeexec」
キー名の途中を「Word.Document.8」 → 「Word.Document.12」 に変えてやればいけます。
「HKEY_CLASSES_ROOT\Word.Document.12\shell\OpenAsReadOnly\ddeexec」
Excelで正規表現(wsfテキトー版) ― 2010/05/16 10:31
Excelの検索機能だと、オートシェイプは検索対象外。
Windowsの検索機能だと、ヒットするかどうかは分かるけど、どのシートにあるのかとか分からない。
ネットで見つけた記事を組み合わせて作ってみて、一応動くけどテキトー感たっぷりな仕上がり(そもそも仕上がってない)。 Windows スクリプト ファイル (.wsf) で保存して使います。
<JOB ID="excel正規表現検索(オートシェイプ対応)">
<!-- excel -->
<REFERENCE GUID="{00020813-0000-0000-C000-000000000046}" />
<SCRIPT LANGUAGE="VBScript">
Option Explicit
'変数定義
Dim fname 'ファイル名
Dim args '引数
Dim hitRes
Dim excel, fso
fname = ""
Set args = WScript.Arguments
hitRes = ""
'Excelとか開く
Set excel = WScript.CreateObject("Excel.Application")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
'引数チェック
If args.length = 0 Then
'For Double Clicked: File Open Dialog
fname = excel.GetOpenFileName()
If fname = False Then
excel.WindowState = xlMinimized
WScript.Echo("ファイルを選択してください。")
WScript.Quit
End If
ElseIf args.length = 1 Then
'For Drug&Drop
fname = args(0)
If fso.FolderExists(fname) Then
WScript.Echo("フォルダは面倒なので、ファイルを指定してください。")
WScript.Quit
End If
Else
WScript.Echo("ファイルは1つだけにしてくれるとうれしいな。")
WScript.Quit
End If
'検索条件人力
Dim searchExp, rE
searchExp = InputBox("検索条件を入力してください。")
If searchExp = "" Then
WScript.Echo("何か入れてね")
WScript.Quit
End If
Set rE = CreateObject("VBScript.RegExp")
rE.Pattern = searchExp '検索パターン
rE.IgnoreCase = True 'とりあえず大文字・小文字は区別なし
rE.Global = True '文字列全体を検索
'Workbookを開く
Dim book1
Set book1 = excel.Workbooks.Open(fname, true, true)
'検索実行
Dim bookName, sheet, rg, rgCur, sp, i
bookName = book1.Name
For Each sheet In book1.Worksheets
hitRes = hitRes + vbCrLf + "--- シート:" + sheet.Name + " ---"
'↓ WinXP SP3 + Excel2003だと、エラーになるかも
sheet.Activate
'値セルの検索
Set rg = sheet.UsedRange.SpecialCells(xlCellTypeConstants)
For Each rgCur In rg
If Not IsNull(rgCur.Value) And "" <> rgCur.Value Then
If rE.Test(rgCur.Value) Then
hitRes = hitRes + vbCrLf + " " + rgCur.Address + ":" + vbTab + rgCur.Value
End If
End If
Next
'数式セルの検索
rg = Null
On Error Resume Next
Set rg = sheet.UsedRange.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not IsNull(rg) Then
For Each rgCur In rg
If Not IsNull(rgCur.Formula) And "" <> rgCur.Formula Then
If rE.Test(rgCur.Formula) Then
hitRes = hitRes + vbCrLf + " " + rgCur.Address + ":" + vbTab + rgCur.Formula
End If
End If
Next
End If
'オートシェイプの検索
If 0 < sheet.Shapes.Count Then
Dim spTxt, idx
For Each sp In Sheet.Shapes
'オートシェイプ内の文字列取得は、OS、Officeのバージョンによって方法が変わるのかな?
'これだ! という方法がよく分からなくて、詳しく調べる気もないので、環境毎に都度対応する。
'タイプA(Win7 x64 + Excel2007 では動作した)
sp.Select
spTxt = excel.Selection.Characters.Text
'タイプB(胡散臭いやり方。 WinXP SP3 + Excel2003 ではこちらでないと取得できなかった)
' spTxt = ""
' On Error Resume Next
' spTxt = sp.Text
' On Error GoTo 0
' If spTxt = "" Then
' spTxt = sp.AlternativeText
' idx = InStr(1, spTxt, ": ", 1)
' If idx > 0 Then
' spTxt = Right(spTxt, Len(spTxt) - idx)
' End If
' End If
If spTxt <> "" Then
If rE.Test(spTxt) Then
hitRes = hitRes + vbCrLf + " 図[" + sp.Name + "]:" + vbTab + Replace(spTxt, vbLf, " ")
End If
End If
Next
End If
Next
'Workbook閉じる
book1.Close
Set book1 = Nothing
'クリップボードへコピーしてダイアログにも表示
Dim objIE
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.Visible = True 'アクセス許可ダイアログがどこに出るのか分からなくなってしまったので、しょうがなく
While objIE.Busy
WScript.Sleep 100
WEnd
objIE.Document.parentWindow.clipboardData.setData "text", hitRes
objIE.Quit
Set objIE = Nothing
WScript.Echo("検索結果(クリップボードにもコピーしました):" + vbCrLf + vbCrLf + hitRes)
</SCRIPT>
</JOB>
MS Office + XP 読取専用で開く設定 ― 2009/10/01 00:59
下記設定を行えば、xls、docファイルを右クリックで
[読み取り専用で開く] メニューが出るようになる。
とりあえず処置なのでエラーが出まくりますが(特にWord)、読取専用では開けます。 気が向いたら、ちゃんとした対策を考えるかもしれませんが、多分やらない(^^;
-----------------------------------------------------------
まず、[エクスプローラー] → [ツールメニュー] → [フォルダオプション] を開く。
【Excel設定】
・[ファイルの種類]タブから "XLS" や "XLSX" を選び、[詳細設定]ボタン押下。
・アクションの中から "読み取り専用で開く" を選び、[編集]ボタン押下。
・アクションの末尾に "(&R)" などを付ける。
例) "読み取り専用で開く(&R)"
・DDEメッセージを下記のように変更する。
"[open("%1",,,,,,,,,,,,,,1,,1)]"
↓
"[open("%1",,True,,,,,,,,,,,,1,,1)]"
【Word設定】
・[ファイルの種類]タブから "DOC" や "DOCX" を選び、[詳細設定]ボタン押下。
・アクションの中から "読み取り専用で開く" を選び、[編集]ボタン押下。
・アクションの末尾に "(&R)" などを付ける。
例) "読み取り専用で開く(&R)"
・DDEメッセージを下記のように変更する。
"[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0]"
↓
"[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0,.ReadOnly=1]"
[読み取り専用で開く] メニューが出るようになる。
とりあえず処置なのでエラーが出まくりますが(特にWord)、読取専用では開けます。 気が向いたら、ちゃんとした対策を考えるかもしれませんが、多分やらない(^^;
-----------------------------------------------------------
まず、[エクスプローラー] → [ツールメニュー] → [フォルダオプション] を開く。
【Excel設定】
・[ファイルの種類]タブから "XLS" や "XLSX" を選び、[詳細設定]ボタン押下。
・アクションの中から "読み取り専用で開く" を選び、[編集]ボタン押下。
・アクションの末尾に "(&R)" などを付ける。
例) "読み取り専用で開く(&R)"
・DDEメッセージを下記のように変更する。
"[open("%1",,,,,,,,,,,,,,1,,1)]"
↓
"[open("%1",,True,,,,,,,,,,,,1,,1)]"
【Word設定】
・[ファイルの種類]タブから "DOC" や "DOCX" を選び、[詳細設定]ボタン押下。
・アクションの中から "読み取り専用で開く" を選び、[編集]ボタン押下。
・アクションの末尾に "(&R)" などを付ける。
例) "読み取り専用で開く(&R)"
・DDEメッセージを下記のように変更する。
"[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0]"
↓
"[AppShow][REM _DDE_ReadWriteOnSave][FileOpen .Name="%1",.Revert=0,.ReadOnly=1]"
最近のコメント