MS ACCESS(へたれな)コネタ 「Docmd.TransferText」で実行時エラー'3027'

テーブルデータのテキストファイルへのエクスポート処理を行なっていたのですが、なぞの実行時エラーが発生してしまいました。「実行時エラー'3027' データベースまたはオブジェクトは読み取り専用なので、更新できません。」テキストファイルへの出力だから、他のアプリからファイルがロックされていないかとか、いろいろ調べてしまいました。ネット良く調べてみるとどうやらACCESSの自身の既知の問題のようでした。JETエンジン用のレジストリへあらかじめ登録されている拡張子「txt,csv,tab,asc,tmp,htm,html」以外は利用できないことがわかりました。
マイクロソフト推奨の対策案はレジストリ変更です。
f:id:ArappoCaro:20070709222638j:image
レジストリ変更するのが嫌なので、拡張子「.txt」のダミーファイルへ出力後にファイル名を変更する方式で対策しました。拡張子「.dat」ファイルへのエクスポートなんて日常茶飯事でしょうから、かなり有名な問題点なのではないでしょうかね。

DoCmd.TransferText acExportDelim, "標準", "出力テーブル", "Dummy.txt", True, ""
FileCopy "Dummy.txt", "out.dat"
Kill "Dummy.txt"

上記のなかの「FileCopy」は「Scripting.FileSystemObject」のラッピング関数。

Public Sub FileCopy(pFromFile As String, pToFile As String)
    Dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CopyFile pFromFile, pToFile, True
    Set fs = Nothing
End Sub

参考
MY PC ENVIRONMENT
ACC2000:拡張子を持つテキスト ファイルにその Access をインポートする方法が認識しません。