プロが教える店舗&オフィスのセキュリティ対策術

Excel2003を使っています。

基本的なことで恐縮なのですが、
Excelファイルを手動で開くとき、読み取り専用にするような方法はないでしょうか。

ファイルのプロパティから「読み取り専用」にチェックを入れても
NASの性質なのか、チェックが外れてしまいます。
(前提として、ここの変更は考えていません)

そこで、「読み取り専用を推奨する」にしたのですが、毎回メッセージボックスが出るため
「読み取り専用にしない」を選択される場合もあります。

そのため、VBAにその指示を書き込む方法を探していました。

たとえば、以下のコードを試してみました。
しかし、開いたファイルに指示しているため、当然ながら以下のメッセージが出ます。
"***.xls は既に開いています。2重に開くと、これまでの変更内容は破棄されます。***.xls を開きますか?"

Private Sub Workbook_Open()
Dim Filename As String
Filename = ThisWorkbook.FullName

With Workbooks.Open(Filename, , True)
.ActiveSheet.Activate
End With
End Sub


「読み取り専用を推奨する」をオンにして、Workbook.Openの引数である
ignorereadonlyrecommended を設定する…というのも、
やはり上記の点で引っかかります。

何か方法はないものでしょうか。。。

A 回答 (2件)

>Excelファイルを手動で開くとき、読み取り専用にするような方法はないでしょうか。


マクロが動いていることが前提です。
この元のマクロは、私自身の作ではありませんが、このような方法は使えませんでしょうか。


'//
Private Sub Workbook_Open()
Dim flg As Boolean
With ThisWorkbook
   If Not .ReadOnly Then
     flg = .Saved
     .Saved = True
     .ChangeFileAccess xlReadOnly
     .Saved = flg
   End If
 End With
End Sub

'//
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。上記のコード、試してみました。
少し短くできるかと思って、以下も試してみました。

Private Sub Workbook_Open()
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub

すると、以下のメッセージが出ます。
「読み取り専用の切り替えを行う前に、編集内容を保存しますか?」

…ご提示のように、Savedプロパティの設定がポイントかと思いました。
上記だと丸ごと各ファイルに貼って回ってもよさそうですね!

こちらを使わせていただこうと思います。
独断ですが、ベストアンサーとさせていただきます。ありがとうございました。

お礼日時:2013/11/06 12:49

シートの中身を「書き換えさせたくない」のであれば、以下のようにします。



1.書き換えさせたくないセルを選択する。すべてであれば、全セルを選択する。

2.「書式」→「セル」→「保護」タブ→「ロック」にチェックを入れる→「OK」ボタン。

3.「ツール」→「保護」→「シートの保護」→「シートとロックされたセルを保護~」にチェックを入れる→「シートの保護を解除する為のパスワード」に、任意のパスワード文字列を入力する→「OK」ボタン。

4.上記1~3を、すべてのシートに対して行う。

5.「ファイル」→「上書き保存」で、ブック(ファイル)を上書き保存する。

これでオッケーです。xlsファイル(ブックファイル)を、読み取り専用にする必要はありません。

ファイルを開くと、カーソルの位置情報とかが更新されてしまい、閉じようとすると「Book1への変更を保存しますか?」と言うダイアログが出ますが「はい」を押しても「いいえ」を押しても、セルの中身は書き換え出来ません。

以下、蛇足ですが。

xlsファイルは、上記のように「ファイルを開いただけで、内部情報が更新されて、ファイルが『更新あり』の状態にされてしまう」ので、ファイルそのものを読み取り専用(上書き禁止)にしてはいけません。

下手に読み取り専用(上書き禁止)にしちゃうと、上書き保存ボタンを押された時とかに「上書き出来ないから別名保存しろ」と、別名保存のダイアログが出たりして、面倒になります。

なお、ファイルを開いて「上書き保存」をされると、中身は書き換わってないですけど、保存は行われるので、ファイルのタイムスタンプ(更新日時)が書き変わってしまいます(タイムスタンプの更新は避けられません)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

記し忘れていましたが、この設定を行う各ファイルの中には、
「作業時の書き換えはOKだけど、保存はNG」という、
作業用オンリー(?)にしたいと思っているものがあります。

上記の方法は既に試しておりました。
丁寧なアドバイスをいただき、大変恐縮です。ありがとうございました。

***
>xlsファイルは、上記のように「ファイルを開いただけで、内部情報が更新されて、ファイルが『更新あり』の状態にされてしまう」ので、ファイルそのものを読み取り専用(上書き禁止)にしてはいけません。

他のファイルで何も手を付けていないのに「保存しますか?」と聞かれることがありました。
この疑問が解けました。今後の参考にさせていただきたいと思います。

お礼日時:2013/11/06 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!