Accessエクスポート時のファイル名規則

このQ&Aのポイント
  • Access2010でクエリの内容をテキストファイルでエクスポートする際に起きるファイル名の規則エラーについて。
  • エクスポート時にファイル名に感嘆符(!)を付けることができず、実行時エラー2006が発生する。
  • VBAを使用しても同じエラーが発生し、手動で作成することはできるがAccessのエクスポート時の制限によるものかもしれない。
回答を見る
  • ベストアンサー

【Access】エクスポート時のファイル名規則

お世話になります。 Access2010にてクエリの内容をテキストファイルでエクスポートするツールを作成しました。 エクスポート自体は問題ありませんが、ファイル名として感嘆符(!)を付けたいのですが、以下のメッセージが表示されエラーとなります。 ※!は半角です。 実行時エラー2006 指定したオブジェクト名'!test.txt'はMicrosoft Accessの名前付け規則に従っていません。 ちなみに以下のようなVBAです。 DoCmd.TransferText acExportDelim, "エクスポート定義", "エクスポートクエリ", "C:\!test.txt" !付きのファイル名を変数に入れて指定してみましたが、同じエラーが出てしまいます。 どうにか!付きファイル名でエクスポートすることは出来ないでしょうか。 ※普通に手動で!付きのファイルを作成することはできますので、Accessのエクスポート時の制限かなにかでしょうか。。 ご教授の程、宜しくお願い致します。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

 1.!無しファイル名でエクスポート  2.既存の!付きファイルを削除   ← VBAよりBAT起動  3.エクスポートした!無しファイル名をリネーム(!付きにする) ← VBAよりBAT起動 に関しては、Dir関数で "" か否かで ファイルがあれば、kill してしまえば Bat ファイルを呼び出す必要はないかと。 なお、私はファイル名でソートした時に先頭に来て欲しい一時的なファイルの場合には アンダーバー _ を頭に使っています。 蛇足の部分についてなのですが、WindowsXP & Office2002 & IE7 の頃?には ハイパーリンクの設定で、C:\Documents and Settings\・・・ のようにPath中に半角スペースがあっても機能していましたが 環境が変わってからは半角スペースが、%20 に置き換えられてしまい機能しません。 URL? HTML? の規格が新しくなったためらしいです。 なので、#1さんが ! の件も含めて何かご存知かな?と期待して、「何処?」とお尋ねした次第です。 そちらの環境では、! があっても問題ないようですね。 この検証は涼しくなってから・・・ (^_^;

naoto0216
質問者

お礼

度々のご回答ありがとうございます。 >に関しては、Dir関数で "" か否かで ファイルがあれば、kill してしまえばBat ファイルを呼び出す必要はないかと。 勉強不足ですみません。。 そもそもファイル名の変更やファイルの削除等はWindowsコマンドで実施するものと思ってました(VBAでは出来ないと思ってました)。 教えて頂いた通り、Dirでファイルの有無をチェックして、あればKillで削除。で、Nameでリネーム・・・すればよいのですね。 大変勉強になりました!ありがとうございます。

naoto0216
質問者

補足

>name "C:\test.txt" as "C:\!test.txt" 初めの回答で既に教えて頂いてたんですね。すみません。。

その他の回答 (2)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

>Accessでは使えないと明記されてます。 >というか、そもそもMicrosoftから明確「ファイル名には使わないようにしてね」って言われてます。 これはどこに載っていますか? Windowsでファイル名に使えないリストには、! はありません。 http://support.microsoft.com/kb/879124/ja Access データベースでの作業時に使用すべきでない特殊文字 http://support.microsoft.com/kb/826763/ja には、! は有りますけど、! の代わりに # で試したらすんなりと保存されました (^_^? 取りあえず、回答としては大人しく DoCmd.TransferText acExportDelim, "エクスポート定義", "エクスポートクエリ", "C:\test.txt" とやっといて name "C:\test.txt" as "C:\!test.txt" とファイル名を変えるとかで・・・。 (Winows7(Vistaも)からは、UAC のため、Cドライブ直下には保存不可) 以下、蛇足にお付き合い願います。(当方Win7 & Office2010) e:\!test.csv というのを作成しておいて Access で DoCmd.TransferText acImportDelim,・・・はエラーになりました。 が、Excelでファイル→開く・・・ではエラーにはなりません。 しかし、Excelでもセル中にハイパーリンクで、e:\!test.csv を設定すると 設定自体は出来ましたがクリックすると・・・、! も # もダメですね。 私からは以上です。

naoto0216
質問者

お礼

ご回答ありがとうございます。 恐らくNo.1さんは、ファイル名に記号を使ってはいけない・・・という固定概念があって、確認もせずに仰られたのかと思います。人には「ヘルプ見るとかしました?」なんて仰ってましたが(笑 ファイル名の頭に!を付けたりすることは結構あると思うのですが(エクスプローラ上でファイルの一覧を見るときに順序的に上にもっていきたいときとか)どうなんですかね。 ご教授ありがとうございます。 やはりその方法しかないですかねぇ。。投稿後、恐らく!は使えないだろうと思い一応下記の処理をするようにしました。  1.!無しファイル名でエクスポート  2.既存の!付きファイルを削除   ← VBAよりBAT起動  3.エクスポートした!無しファイル名をリネーム(!付きにする) ← VBAよりBAT起動  ※既に同じファイル名が存在するとリネーム不可の為、3の前に削除する必要がありました。 上記処理は一瞬なので、使用者的には意識する必要はありませんが、batファイルを2つ配置しなければならないので、ちょっと面倒ではあります。 >以下、蛇足にお付き合い願います。(当方Win7 & Office2010) 同じ環境です。 >、Excelでもセル中にハイパーリンクで・・・・ ハイパーリンクで同じようにCドライブ直下に!付きCSVを置いてやってみたところ、こちらは問題無くCSV開きました。 UACは元々「通知しない」にしてたのですが、「規定」に変更してもCSV開いたのでUACは関係無さそうですね。 他に何か環境が違うのかもしれません。

回答No.1

エラーメッセージで検索とかヘルプ見るとかしました? Accessでは使えないと明記されてます。 というか、そもそもMicrosoftから明確「ファイル名には使わないようにしてね」って言われてます。 諦めて代替手段をとってください。

naoto0216
質問者

お礼

>エラーメッセージで検索とかヘルプ見るとかしました? もちろん確認しました。 >というか、そもそもMicrosoftから明確「ファイル名には使わないようにしてね」って言われてます。 そういう回答を求めている訳ではないです。 手動だと作成できるので、何か方法はないかと投稿させて頂いた次第です。

関連するQ&A

  • Accessで複数のクエリを1つのCSVファイルにエクスポートする方法

    Accessで複数のクエリを1つのCSVファイルにエクスポートする方法はないでしょうか? 現在は下記のような記述でそれぞれCSVファイルを作成しています。 クエリ1~3を1つのCSVファイルにエクスポートする方法があれば教えて頂きたいです。 よろしくお願いします。 DoCmd.TransferText acExportDelim, , "クエリ1", "C:test1.csv", True, "" DoCmd.TransferText acExportDelim, , "クエリ2", "C:test2.csv", True, "" DoCmd.TransferText acExportDelim, , "クエリ3", "C:test3.csv", True, ""

  • ACCESSからテキストファイルへのエクスポート

    ACCESS2002でVBAを使ってテキストファイルにエクスポートしようとすると 次のようなエラーが出てしまいます。 「予期せぬエラー #3027が発生しました。 データベースまたはオブジェクトは読み取り専用なので更新できません。」 これを回避するにはどうしたらいいのでしょうか。 ちなみにVBAの記述は DoCmd.TransferText acExportDelim, "", "抽出クエリ", "a:\nk100.txt" , False, ""という記述です。

  • アクセス2010 ""なしエクスポート

    アクセス2010 VB DoCmd.TransferText acExportDelim, , テーブル名,ファイル名.txt テーブルデータをエクスポートするとき、データをダブルコーテーションなしでデータを送る方法ないでしょうか?

  • ACCESS2002のエクスポートで・・・

    特に困ってはいないのですが不思議に思ったので質問します。 OS:WinXP Pro 環境:ACCESS2002およびEXCEL2002 1.ACCESSでクエリ「TEST1」をEXCELにエクスポートします。 2.エクスポートして作成されたEXCELファイルを開き、シート名「TEST1」を「TEST2」に変更します。 3.再度、ACCESSでクエリ「TEST1」を1.で作成されたEXCELファイルを指定してエクスポートすると「オブジェクト「TEST1」は存在します。置き換えますか?」旨のメッセージが表示されます。 指定したEXCELファイルにはシート「TEST1」は存在しないのになぜそのようなメッセージが表示されるのでしょうか?ちなみそのまま出力するとクエリ「TEST1」のデータはEXCELのシート「TEST2」に出力されます。

  • 【Access2003 VBA】クエリをエクスポートしたい

    選択クエリを.csvもしくは.txt形式でエクスポートしたいです。 今は、下記のコマンドで行っていますが、ヘッダー(タイトル行)が付加されません。 DoCmd.TransferText acExportDelim, , "qry_select_クエリ1", "C:\クエリ1.csv" ヘッダーを入れてエクスポートしたのですが、 どうコーディングすればよろしいでしょうか? よろしくお願いします。

  • Access CSVデータのエクスポート

    Access CSVデータのエクスポート 下記のようにCSVデータをエクスポートしています。 最後をTrueに設定すると1行目がタイトルとしてエクスポート出来るはずが出来ません。 エクスポート定義が原因でしょうか? 対処方法を教えて下さい。 ※ちなみに下のようにエクスポート定義を使用しないと1行目をタイトルしてエクスポート出来ます。 DoCmd.TransferText acExportDelim, "エクスポート定義", "テーブル名", Format(Now(), "yyyymmdd") & "test.csv", True DoCmd.TransferText acExportDelim, , "テーブル名", Format(Now(), "yyyymmdd") & "test.csv", True

  • Accessからのエクスポート先のエラー判定

    下記のようにAccountというテーブルを Xドライブのテストディレクトリにテキストでエクスポートするとします。 DoCmd.TransferText acExportDelim, "", "Account", "X:\test\test.txt" このとき、Xドライブというのはネットワークドライブでネットワークにつないでいるときしか現れません。もしXドライブが見えないとき(ネットワークにつながっていないとき)はエラーメッセージを出して 処理を抜けさせたいのですがどのように判断すればよいのでしょうか。よろしくお願いします。

  • アクセステキストエクスポートについて。

    アクセスでエクスポートする際に フィールド開始位置が有効ではないとなり テキストのアウト出来ない場合 下記の DoCmd.TransferText acExportDelim, , "ファイル名クエリ", "C:\Documents and Settings\Administrator\デスクトップ" & "\" & "ファイル名.csv", True End Sub のようにして対応しているのですが 1レコード目に 余計な フィールド1,フィールド2,フィールド3,フィールド4,フィールド5のようなレコードが 付いてしまうのですが インポートしたままの状態でエクスポート出来ないでしょうか。 ちなみにファイル数が多いのを想定して あとで1レコード目を削除する方法は考えておりません。 どうぞよろしくお願いします。

  • Accessのエクスポート、出力場所について

    Microsoft AccessにてTranseferTextを用いてCSVファイルをエクスポートする際に、Accessのmdbファイルと同じディレクトリに出力したいと考えています。 参考書やネットを調べましたが、TransferTextで出力先を指定するには、ファイルを絶対パスにて指定する例しか見当たらず、また、試しに相対パスを自分で書いてみてやってみましたが、出力されません。 相対パスではできないのでしょうか? それとも相対パスの書き方が悪いのでしょうか? 自分で書いたのは、こんな感じのVBA文です↓ DoCmd>TransferText acExportDelim," Tbl_output エキスポート定義", "tbl_output", "./seikyu.csv", True

  • CSVファイルのエクスポートでソートしたい

    ACCESS VBAで DoCmd.TransferText acExportDelim, , "テーブル名", CSV_File_Full_Path でCSVファイルのエクスポートを行っていますが、 エクスポートするテーブルの任意の複数項目でソートして出力する方法はあるのでしょうか? 現在はテーブルの表示順と異なった出力がされています。

専門家に質問してみよう