• 締切済み

AccessVBA:読込専用ファイルを開きたい

いつもお世話になっております。 Access2000を使用しております。 自MDBから別のMDBファイルのアクセスを行う際に OpenDatabaseメソッドを使用しているのですが、 対象のMDBファイルが読込専用である場合に 以下のエラーが発生してしまいます。 エラーコード   :3051 エラーメッセージ ::ファイル 'C:\***.MDB' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 MDBファイルは書き込みを行いたいということではなく、テーブル名を参照したいだけなので、 読込専用のファイルでもアクセスしたいのですが、 Set db = OpenDatabase(fl, , True) といったように第3引数read-onlyの引数をTrueにしても同様のエラーが発生してしまいます。 読込専用のファイルは開くことが出来ないのでしょうか? ご教示の程、何卒よろしくお願いいたします。

みんなの回答

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

おそらくユーザ設定とパスワードでロックされているのではと思います。 なので、それを作った人に聞くしかないような・・・

o_w_nakazaki
質問者

お礼

ご返答、ありがとうございます。 対象のファイルは当方が作成したものです。パスワード等は設定しておりません。 また、ファイルの読み取り専用(読込専用と記述してしまいました。すみません)の属性をはずすと、開くことが出来ております。 とりあえず、プログラム側で読み取り専用のファイルは開けないエラーメッセージを表示して回避しているのですが、参照するだけなのに読み取り専用ファイルは読めないというのはなるべくしたくないところです。

関連するQ&A

  • ACCESS DB削除について(読み取り専用)

    サーバーのACCESSのMDBファイル(TEST.mdb)を使用して、開発を行っていますが、今までTEST.mdbにアクセス出来ていたのに、今日急にいつものように、アクセス したら、下記エラーが出て開くことは出来てもエクスポートとかテーブルにデータを追加したりすることが出来なくなりました。 「TEST.mdbは、読み取り専用です。」 どうやら、前日他の人が何かしたみたいなのですが、(帰る前にバックアップを 取っておいてあったので、それを戻すと書き込み出来る) しかし、その読み取り専用エラーが出るTEST.mdbのプロパティーを見ると、読み取りには、チェックが付いていません。原因は何が考えられるのでしょうか? バックアップ取ってあったので、リカバリーすれば元のように使えるようには なりますが、又今後このような事があった時、対処出来る様にしたいので、教えてください。

  • 読み取り専用ファイル FileStream でのアクセス

    VC++ .NET2003です。 読み取り専用のファイルを FileStream FileMode::Open でオープンしようとすると、 System::UnauthorizedAccessExceptionエラーが発生します。 読み取り専用でも読み込みだけならいいかと思っていたんですが、これは出来ないのでしょうか? 他に読み込みの方法があれば教えて下さい。

  • 読み取り専用ファイル・・

    質問させて頂きます。 Windows Vista使用で筆まめ20を購入しました。 今までの筆まめ17は何故か不調になってしまい、インストールも出来なくなってしまったからです。筆まめ17の住所等のバックアップデータの読み込みをしましたが、「読み取り専用ファイルです。参照、編集、印刷は出来ますが、上書き保存は出来ません」との、エラーメッセージが出ます。 ファイルのプロパティでは読み取り専用になっていないのですが、読み取り専用ファイルの解除方法や、肝心の上書き保存の出来る様にするには、どうすれば良いのでしょうか? どうぞよろしくお願いします。

  • CD-ROMのファイルの読み取り専用をはずすには?

    CD-ROMのファイルの読み取り専用をはずすには、どうすれ良いですか。 プロパティで全般タブを開き、読み取り専用のチェックをはずしてOKをクリックすると。”ファイル属性の適用エラーが発生したためアクセスが拒否されました”のメッセジが出てデータの取り込みが出ません。 解決方法教えてください。

  • ファイルの読み込みについて

    いつも大変お世話になっています。 例えば以下のような関数があったとします。 function out_file($file_path) { $_handle = @fopen($file_path, "r"); $_dat = @fread($_handle, @filesize($file_path)); @fclose($_handle); return $_dat; } 【質問1】 $file_path の示すファイルが 10M のファイルだとして、10人のクライアントがアクセスしてきたとしたら、サーバーのメモリは 100M 食われてしまうのでしょうか?それとも10M?(まさか、0M?) 【質問2】 ファイルは読み取り専用で開いていますが、大量のクライアントが同時アクセスしてくるとしても flock など無くて正常に動くのでしょうか? それとも、やはり排他制御する必要はあるでしょうか? 10人同時アクセス時のこの関数の挙動がイマイチイメージできません。 以上です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 読み取り専用...

    ファイルの保存をCDRWに書き込みしたのですが、ファイルを開くと何故か読み取り専用の文字が...そのため上書き保存が出来ません。 何度もCDを全消去しまた書き込みを行いましたが「読み取り専用」になります「プロパティ」を開いて試してみましたが、「ファイルの属性の適用中にエラーが発生しましたアクセスが拒否されました。」とでたので無視を選択しましたが依然読み取り専用のままです。他に方法はないですか?

  • ACCESSファイルが開けません。

    保存しているACCESSファイルを開こうとすると、 「ドキュメント『ドキュメント.mdb』を前回開いた時に重大なエラーが発生しました。このドキュメントを引き続き開きますか?」 と、出ます。 恐いので「はい」も「いいえ」をクリックしますが、できずにいます。 どうしたらよいでしょうか?と、出ます。

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

    作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して 上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。 (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です。以上、宜しくお願いします。

  • 共有ファイルのAccess2000が開けません

    読み取り専用をはずしてるのですが、他のPCではファイルが開けません。 \\PC\共有ファイル\ファイル名.mdb を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 と表示されます。 共有モードで設定しています。 教えてください。よろしくお願いします。

  • 【Microsoft Word】読み取り専用で開いても排他が働いてしまう

    【Microsoft Word】読み取り専用で開いても排他が働いてしまう Microsoft Wordのドキュメントをネットワークで共有して参照や編集などをしています。 参照だけしたいときは、読み取り専用で開き、編集する人の邪魔をしたくないと思っています。 そこで、VBAの.ReadOnly=Trueを利用して読み取り専用で開けるようにしました。しかし、読み取り専用で開けるものの、排他制御が働いてしまいます。 参照だけの場合、ファイルをいったんローカルに保存すればいいわけですが、それも面倒です。 (参照だけしたいときに)排他制御が働かないかたちで、Microsoft Wordのドキュメントを開く方法をもしご存知でしたら教えてください。 ちなみに、Excelには「読み取り専用の設定/解除」機能が用意されているようで、読み取り専用で開いているときは、排他が働かない仕組みになっています。

専門家に質問してみよう