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