[読み取り専用]の設定をVBAで実現する方法

このQ&Aのポイント
  • [読み取り専用]の設定をVBAで実現する方法について教えてください。
  • EXCEL2000を使用している場合、フォルダ内のブックに[読み取り専用]の設定をする方法が分かりません。
  • VBAを使用してブックを[読み取り専用]に設定する方法を教えてください。
回答を見る
  • ベストアンサー

[読み取り専用]の設定

EXCEL2000を利用しています。 フォルダにあるブックに[読み取り専用]の設定をかけたいと考えています。 いちいち次のような操作で[読み取り専用]の設定をするのが大変なので、VBAで実現したいと考えています。 --------次のような操作----------------------------------------------------------------------------------- 1.[エクスプローラ] ウィンドウで、必要なファイルが保存されているドライブまたはフォルダを開きます。 2.[ファイル] メニューの [プロパティ] をクリックします。 3.[ファイルの情報] タブで、[読み取り専用] チェック ボックスをオンにします。 ----------------------------------------------------------------------------------------------------------------- 上記の操作による[読み取り専用]の設定をVBAで書くためには、どのように記述すればよいでしょうか? 「ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly 'ブックを読み取り専用に設定する」を記述すると、保存できませんし、「ReadOnlyRecommended:=True」だとセキュリティーが甘くなります。 アドバイスをどうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ファイルの属性変更は、SetAttrステートメントで出来ます。 読取専用にするなら、 SetAttr ファイルのフルパス, vbReadOnly となります。 詳細はヘルプで。

yokoneco
質問者

お礼

maruru01さんには、毎度ご回答頂き大変助かっております。 どうもありがとうございました。

関連するQ&A

  • 読み取り専用ファイルを上書き保存するには?

    作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して 上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。 (1)ThisWorkbookのOpenプロシージャでファイルを読み取り専用状態に設定 (2)ThisWorkbookのBeforeSaveプロシージャで    読み取り専用を解除→上書き保存→読み取り専用状態に再設定    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)      '上書き保存モードを解除      Cancel = True      '上書きしますか?のコメントを非表示に設定      ActiveWorkbook.Saved = True      'ファイルが読み取り専用であった場合は以下の処理を実行      If ActiveWorkbook.ReadOnly Then        'ブックの読み取り専用設定を解除        ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True        '上書き保存を実行        Application.DisplayAlerts = False        Application.EnableEvents = False        ActiveWorkbook.Save        Application.EnableEvents = True        Application.DisplayAlerts = True        'ブックを読み取り専用に設定        ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly      'ファイルが読み取り専用でなかった場合は以下の処理を実行      Else        '上書き保存を実行        Application.DisplayAlerts = False        Application.EnableEvents = False        ActiveWorkbook.Save        Application.EnableEvents = True        Application.DisplayAlerts = True      End If    End Sub 上記のマクロで上手くいきそうなのですが、下記2点が解決できずに困っております。 (1)上書き保存ボタンをクリックすると下記のメッセージが毎回表示されてしまいます。   『読み取り専用です。コピーを保存するには名前を付けて保存して下さい。』   OKボタンをクリックしたりEscやEnterキーを押下さえすればこの警告メッセージを回避でき   以後は思った通りの処理を行えるのですが、できればこのメッセージを表示したくない。 (2)上書き保存のために読み取り専用を解除した際、他のオペレーターがエクセル起動中、   または上書き保存中であった場合、エラーが発生してしまうことと思われます。   この問題の解決策をご存知の方、是非教えて下さいますよう宜しくお願いします。 当初は共有ブックとしての運用の方向で進めていたのですが、既に2人のオペレーターが ファイルにアクセスしている状態で、3人目のオペレーターがファイルを開くと読み取り専用と なってしまったり、保存時に時間がかかり過ぎたり、保存時のエラーが頻繁に発生したりといった 状況でしたので共有ブックとしての運用は諦めました。(シート50枚、ファイルサイズ3.5MB程度) 使用PCはXPでExcel2003です。以上、宜しくお願いします。

  • xlsmとxlsのマクロについて

    こんにちは 今まで動いていたxlsのマクロをxlsmに バージョンアップさせたところ不具合が起きましたので質問させていただきます。 ファイルの概要(すべてマクロによる処理) (1) ファイルを開いたときに,読み取り専用で開く   ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly (2) シートの特定の箇所を変更 (3) 読み取り専用を解除し上書き保存   ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite   ActiveWorkbook.Save xlsmのファイルでは読み取り専用を解除すると, 変更されたファイルというボックスが表示されます。 'ファイル名'を変更しました。 別の人も変更を加えました。どのように処理しますか。 破棄 保存 キャンセル どのようにマクロを設定すればこのボックスを表示せず, 上書き保存をすることができますでしょうか。 よろしくお願いします。

  • Excel VBA の ChangeFileAccess

    Excel(2000 SP-3) VBAの ChangeFileAccessがうまく行きません。 VBAからあるExcelファイルをWorkbooks.Open で開く処理の制御で悩んでいます。 2人で同時にマクロでhoge.xls をOpenすると、どちらも「他のユーザが使用中です」的なメッセージが出ませんでした。 (エクスプローラからクリックしたりして、hoge.xlsを直接開くと、他のユーザが使用中かどうかがわかります) それでは困るので、ChangeFileAccess のNotify:=true をセットしてみたら、2人目は他のユーザが使用中である旨のメッセージが出るようになりました。 しかし、ChangeFileAccess のNotifyはちゃんと設定されているようなのですが、 'ChangeFileAccess'メソッドは失敗しました:'_Workbook'オブジェクト とエラーが出ています。 ChangeFileAccessはどう使うのが正しいのでしょうか? ソースは Workbooks.Open Filename:=ThisWorkbook.Path & "\hoge.xls", updatelinks:=1, Notify:=True ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True って感じなのですが。 Workbooks.Openはちゃんとできています。Workbooks.OpenがコケたらOn Error Goto で拾ってMsgBoxでメッセージを出す、という処理をしているのですが、Workbooks.OpenはOKなのにChangeFileAccessでコケて、On Error Goto に引っかかってしまっています。

  • Excelブック保存前に個人情報を削除

    Excel VBA 2007を使用しています。 ActiveWorkbook.RemovePersonalInformation = True によって、ブック保存時に個人情報を保存しないようにできますが、 ユーザーインターフェースの操作の「ドキュメント検査」と同様に、ブック保存前に個人情報を削除するにはどうすれば良いでしょうか。

  • エクセル「読み取り専用」を変更出来なくする設定は?

    エクセル2000です。 BOOKの属性を「読み取り専用」としているのですが、この属性を変更不可と出来ないものでしょうか?設定したときのやりかたと同じですが、開く前のBOOKのアイコンを右クリックして「プロパティ」の「全般」で、中にある「属性」の「読み取り専用」のチェックをはずすと簡単に変わってしまいます。 VBAでWorkbook_BeforeSaveを使って上書き保存が出来ないようにすることは十分可能でしょうが、できればせっかく用意されている「読み取り専用」という属性を活かしたいと思い質問いたしました。 よろしくおねがいいたします。

  • シンクライアントでのVBAによるファイル保存

    ExcelのテンプレートファイルにVBAマクロを記述しています。 VBAにより新しいブックを開き、データを作り込んだ後、テンプレートファイルが置かれているフォルダに保存するマクロを作成しました。 リッチクライアント上では問題なく動くのですが、シンクライアント上で実行すると、  ActiveWorkbook.SaveAs Filename:='フルパスのファイル名'  ※フルパスのファイル名は、"C:\folder\file.xlsx"というような形式になっています。 のところでエラーになってしまいます。 パス付きのファイル名について、作法があるようでしたらお教えいただけますか。 よろしくお願い致します。

  • EXCELが勝手に「読み取り専用」になる。

     エクセルで保存したファイルが次に開いた時に、勝手に「読み取り専用」になってしまい、別の名前で改めて保存しなければならなくなります。  特に何も操作してないのに、なんで勝手に「読み取り専用」になってしまうのでしょか。 普通に上書き保存できるようにしたいのですが、何か設定が必要でしょうか。  教えていただければ幸いです。 よろしくお願いします、

  • Excelファイルの読み取り専用が解除できない

    皆さんこんにちは、質問させてください。 以前XPで使用していた外付けHDD内のExcel2000のファイルを 新調したPC Win7で開くと【読み取り専用】となり書き込みや保存が出来ません。 ファイルのプロパティの全般タブの属性で読み取り専用にはチェックが入っていませんでした。 別の名前で保存してやろうとすると、「○○を保存できません。フォルダが読み取り専用に設定されています。」と出て無理でした。 どうすれば解除できるのか教えてください。よろしくお願いいたします。

  • VBAでのシートコピーについて

    VBAでシートを新しいブックにコピーして、名前を付けて保存したいのですが、同じファイル名が存在すると、必ず「上書きしますか?」のダイアログが表示されてしまいます。無条件で上書きする方法ってありませんか? 今は↓のようなコードを書いてます。 Application.ScreenUpdating = False Sheets("sheet1").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False ActiveWindow.Close

  • 読み取り専用設定

    ご教授願います。 Excelを使用して表を作成しました。 この表を他人に配布した場合に数字を修正されたくありません。 そこで、Excelファイルのプロパティの「読み取り専用属性」を「On」にしようと思いますが、Excelファイルが100ファイル程度あり、とても手に負える量ではありません。 そこで、Access97を使用して、Excelファイルのプロパティの「読み取り専用属性」を「On」「off」を設定する方法はありますでしょうか? Excelマクロ・VBAはど素人であり、Accessを使って設定したいのです。 どうかご教授お願いします。

専門家に質問してみよう