Access

3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。

3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。
記事内に商品プロモーションを含む場合があります

Access実行時エラー3027

AccessのVBA実行時、「3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。」のエラーが出て困ったことはありませんか?

こちらのエラーは色んなケースで発生するようですが、とにかくメッセージが不親切ですね。

「データベースまたはオブジェクトは読み取り専用」と言われても解決のための何のヒントも得られません(笑)

そもそもデータベースも何らかのオブジェクトも読み取り専用でないときにも発生しますから・・・

3027エラーが発生する事例

いくつかの事例があると思いますが、今回は分かりやすい原因で発生していたのでご紹介します。

今回はVBAであるテーブルのデータをCSV出力するプログラム実行時に発生しました。

ステップ実行してみるとエラーが発生している個所はこちらの行。

DoCmd.TransferText acExportDelim, , "テーブル1", strFileName, True

エラーを追っていくと、指定しているファイル名「strFileName」の拡張子が「xltx」(EXCEL形式)になっている!

TransferText(テキストファイル形式でエクスポート)なので、拡張子がEXCELになっていることがエラーの原因でした。

エラーメッセージとエラー内容が全く異なるので分かりづらいですね。

ケアレスミスですが、こんなケースでこのエラーがでることもあると知っておくと無駄にデバッグの時間を取られずに済みます。

Microsoftのヘルプページ

一応、Microsoftのヘルプページも貼っておきますがあまり解決につながる情報ではなさそうです。

https://learn.microsoft.com/ja-jp/office/troubleshoot/access/database-or-object-is-read-only

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。