- 締切済み
■Access エクスポート時に文字数を指定してCSV出力
■Access エクスポート時に文字数を指定してCSV出力 Accessのテーブルをエクスポート時に文字数を指定して、更に文字列の後ろのスペースを含めてCSV形式で出力させたいのですが可能ですか? CSVですので区切り文字は「,」(カンマ)で、全てのフィールドに対して「"」(ダブルクォート)で括りたいのです。 出力結果は下記のイメージになります。 ・1つ目のフィールドは、指定文字数「5文字」で「2文字」のスペースが含まれる ・2つ目のフィールドは、指定文字数「4文字」 ・3つ目のフィールドは、指定文字数「5文字」(2byte表記の為、10byte指定)で、「2文字」 (4byte)をスペースにする。 ---------------------------- "001 ","test","あああ " "002 ","test","いいい " "003 ","test","ううう " 以上になりますが、どなたか教えていただけますでしょうか。 ACCESS初心者の為、大変申し訳ありませんが、詳しい手順もお願い致します。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- layy
- ベストアンサー率23% (292/1222)
スペースを後ろに付与するで、 LEFT("123"&" ",5) を行うと "123 " になるので、これも覚えて下さい。 文字+不足固定文字n文字分を作って、先頭からn文字切り取れば、後ろに不足分2文字で付与してくれます。 RIGHTを使って前に付与するケースあります。
- layy
- ベストアンサー率23% (292/1222)
加工しながら、のやり方ではVBAとなります。 テーブルの値を出力するにはどういう記述かを予習して下さい。 テーブルにエクスポートしたいデータを集めるには、ですが、指定したい文字数はどういう持ち方になっていますか。イメージが浮かびません。 エクスポートする処理単位で出力項目長が違うのでしょうか。ある処理では1項目目5バイト2項目目4バイトでまた違う処理では1項目目7バイト2項目目4バイトとかいうのであればどこでどう文字長を与えるかのが課題です。 スペース付与についてはNO1のやり方でよいので、スペース付与したりカンマ形式にしたりというのは何とかなるレベルと考えます。
お礼
桁数を指定した上で「指定桁数不足分をスペースで補う」ことができれば良いのですが、 Format関数を使用すれば出来る事がわかりました。 「Format([フィールド名],"!" & String(桁数,"@"))
補足
桁数を指定した上で「指定桁数不足分をスペースで補う」ことができれば良いのですが、 Format関数を使用すれば出来る事がわかりました。 「Format([フィールド名],"!" & String(桁数,"@"))
- layy
- ベストアンサー率23% (292/1222)
>各フィールドのレコードの文字数は、決まっていません。 各レコードのフィールドの文字数は、決まっていません。 決まった状態なら通常エクスポート定義を準備しますが、 変わるようなら、それぞれでエクスポート定義を準備して、 マクロで条件振り分け、かと思われます。 それか一番長い状態で作っておいて、CSV形式になった後で加工を考える。 「001」「test」「あああ」 のデータをテーブル作成クエリ等で 「001」「test」「あああ」 でエクスポートするテーブルができあがる。 加工しながらエクスポート、"001 ","test","あああ "になる と 「001」「test」「あああ」 のデータをテーブル作成クエリ等で 「001 」「test」「あああ 」 でエクスポートするテーブルができあがる。 そのままエクスポート、"001 ","test","あああ "になる では対処が変わります。 どちらをイメージしているのでしょうか。 VBAを使っての処理については実施できますか。
補足
ご回答有難うございます。 最終的に、エクスポート結果が"001 ","test","あああ "の形になっていれば良いので、 加工しながらエクスポートでも、そのままエクスポートでも、どちらでも良いのです。 VBAは勉強が必要になりますが、それでも構いません。 どうぞよろしくお願い致します。
- layy
- ベストアンサー率23% (292/1222)
CSV形式でエクスポートするデータを作成する時に各フィールドにていくつスペースを付与したらいいのか不明、という解釈でいいでしょうか。 案) ABCという3文字をABC△△5文字、DEという2文字をDE△△△5文字にする、には ABCと△△△△△を文字連結してLEFT関数で左から5文字抜く DEと△△△△△を文字連結してLEFT関数で左から5文字抜く です。この方針で出来る内容なら難しくないです。 △はスペースの意 処理の中で5とか2とか4とか文字数与えてそれぞれ編集するのはたぶん難しくなります。
補足
早速のご回答ありがとうございます。 私の説明不足で申し訳ありませんが、 それぞれのフィールドで、文字数(桁数)を固定長で指定した上で、 固定長以下のレコードの後方はスペースで表現させたいのですが、伝わりますでしょうか。 各フィールドのレコードの文字数は、決まっていません。 また、冒頭のとおり、出力結果はフィールド毎にダブルクォートで括り、カンマ区切りの CSV形式に出力させたいと考えております。 以上、ご回答宜しくお願いします。
お礼
なるほどですね。こちらも便利ですね!勉強になります。 ありがとうございました。