みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

お世話になります。

Access2010にてクエリの内容をテキストファイルでエクスポートするツールを作成しました。

エクスポート自体は問題ありませんが、ファイル名として感嘆符(!)を付けたいのですが、以下のメッセージが表示されエラーとなります。
※!は半角です。

実行時エラー2006
指定したオブジェクト名'!test.txt'はMicrosoft Accessの名前付け規則に従っていません。

ちなみに以下のようなVBAです。
DoCmd.TransferText acExportDelim, "エクスポート定義", "エクスポートクエリ", "C:\!test.txt"

!付きのファイル名を変数に入れて指定してみましたが、同じエラーが出てしまいます。
どうにか!付きファイル名でエクスポートすることは出来ないでしょうか。
※普通に手動で!付きのファイルを作成することはできますので、Accessのエクスポート時の制限かなにかでしょうか。。

ご教授の程、宜しくお願い致します。

投稿日時 - 2013-08-06 13:50:26

QNo.8208248

すぐに回答ほしいです

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

 1.!無しファイル名でエクスポート
 2.既存の!付きファイルを削除   ← VBAよりBAT起動
 3.エクスポートした!無しファイル名をリネーム(!付きにする) ← VBAよりBAT起動
に関しては、Dir関数で "" か否かで ファイルがあれば、kill してしまえば
Bat ファイルを呼び出す必要はないかと。
なお、私はファイル名でソートした時に先頭に来て欲しい一時的なファイルの場合には
アンダーバー _ を頭に使っています。

蛇足の部分についてなのですが、WindowsXP & Office2002 & IE7 の頃?には
ハイパーリンクの設定で、C:\Documents and Settings\・・・
のようにPath中に半角スペースがあっても機能していましたが
環境が変わってからは半角スペースが、%20 に置き換えられてしまい機能しません。
URL? HTML? の規格が新しくなったためらしいです。
なので、#1さんが ! の件も含めて何かご存知かな?と期待して、「何処?」とお尋ねした次第です。
そちらの環境では、! があっても問題ないようですね。
この検証は涼しくなってから・・・ (^_^;

投稿日時 - 2013-08-07 06:22:28

補足

>name "C:\test.txt" as "C:\!test.txt"

初めの回答で既に教えて頂いてたんですね。すみません。。

投稿日時 - 2013-08-07 09:39:37

お礼

度々のご回答ありがとうございます。

>に関しては、Dir関数で "" か否かで ファイルがあれば、kill してしまえばBat ファイルを呼び出す必要はないかと。

勉強不足ですみません。。
そもそもファイル名の変更やファイルの削除等はWindowsコマンドで実施するものと思ってました(VBAでは出来ないと思ってました)。

教えて頂いた通り、Dirでファイルの有無をチェックして、あればKillで削除。で、Nameでリネーム・・・すればよいのですね。

大変勉強になりました!ありがとうございます。

投稿日時 - 2013-08-07 09:30:37

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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 を設定すると
設定自体は出来ましたがクリックすると・・・、! も # もダメですね。
私からは以上です。

投稿日時 - 2013-08-06 17:47:58

お礼

ご回答ありがとうございます。

恐らくNo.1さんは、ファイル名に記号を使ってはいけない・・・という固定概念があって、確認もせずに仰られたのかと思います。人には「ヘルプ見るとかしました?」なんて仰ってましたが(笑

ファイル名の頭に!を付けたりすることは結構あると思うのですが(エクスプローラ上でファイルの一覧を見るときに順序的に上にもっていきたいときとか)どうなんですかね。

ご教授ありがとうございます。
やはりその方法しかないですかねぇ。。投稿後、恐らく!は使えないだろうと思い一応下記の処理をするようにしました。

 1.!無しファイル名でエクスポート
 2.既存の!付きファイルを削除   ← VBAよりBAT起動
 3.エクスポートした!無しファイル名をリネーム(!付きにする) ← VBAよりBAT起動

 ※既に同じファイル名が存在するとリネーム不可の為、3の前に削除する必要がありました。

上記処理は一瞬なので、使用者的には意識する必要はありませんが、batファイルを2つ配置しなければならないので、ちょっと面倒ではあります。


>以下、蛇足にお付き合い願います。(当方Win7 & Office2010)
同じ環境です。

>、Excelでもセル中にハイパーリンクで・・・・
ハイパーリンクで同じようにCドライブ直下に!付きCSVを置いてやってみたところ、こちらは問題無くCSV開きました。

UACは元々「通知しない」にしてたのですが、「規定」に変更してもCSV開いたのでUACは関係無さそうですね。
他に何か環境が違うのかもしれません。

投稿日時 - 2013-08-06 19:12:47

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

投稿日時 - 2013-08-06 14:16:07

お礼

>エラーメッセージで検索とかヘルプ見るとかしました?
もちろん確認しました。

>というか、そもそもMicrosoftから明確「ファイル名には使わないようにしてね」って言われてます。

そういう回答を求めている訳ではないです。
手動だと作成できるので、何か方法はないかと投稿させて頂いた次第です。

投稿日時 - 2013-08-06 14:50:11

あなたにオススメの質問