• ベストアンサー
  • 困ってます

テキストファイルの結合+改行について

ユーザーからの注文が1行1テキストファイルで断続的にメールに添付されて配信されてきます。MS-DOSのCOPYコマンドとワイルドカードを利用して結合のバッチファイルを作成しましたが、テキストファイルの最終に改行がない為、長~いレコードになってしまい、データベース(Accessですが)にインポートできません。改行付で結合、あるいはその他の解決方法はないものでしょうか? win98+Access2000※Accessはマクロをチョロッといじれる程度の初心者です。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数4722
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.3
  • imogasi
  • ベストアンサー率27% (4575/16384)

Sub test01() Path = "c:\My Documents\" Open Path & "xxx.csv" For Output As #2 a = Dir("c:\My Documents\") p01: b = Dir() If b = "" Then GoTo e01 If Right(b, 3) = "csv" Then MsgBox b Open Path & b For Input As #1 On Error GoTo 0 Input #1, x Print #2, x Close #1 End If GoTo p01 e01: Close #2 End Sub Path=の右辺のところを注文テキストファイルあるフォルダ名に変えてください(フルパス)。そのフォルダには注文テキスト以外置かないように。 Open Path & "xxx.csv" For Output As #2のところは xxx.csvでテストしましたが、アウトプットファイル名.txt に変えてください。 エクセルやアクセスVBAのモジュールにコピーし実行できるはずです。 VBの場合も標準モジュールにコピーし、Form1を解放し、Sub test01()をSub Main()にして実行して下さい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。回答を充分理解する力がまだ無いので試行錯誤でやってみます。ちちなみにコマンドボタンのイベントに突っ込んで見ましたが今一歩です。やっぱりこの辺を理解していかないと先には進めませんよねぇ。頑張ってみます。

関連するQ&A

  • テキストファイル結合のバッチコマンド

    DOSプロンプトで、「copy」というコマンドを使って特定のフォルダ内のテキストファイルを全て読み込んで結合するバッチファイルを作りたいのですが、わかる方教えてください。

  • ACCESSでファイルを結合するには

     ACCESS2000で、銀行振替のフロッピーを作りたいと思って、4個のテーブルを固定長のテキストファイルに変換しました、この4個のテキストファイルをACCESS上から1つのテキストファイルに結合しフロッピーに出力する方法をご存知の方よろしくお願いします。  尚VBAはよく分りませんので、マクロで作る方法がありましたらお願いします。

  • datファイルをACCESSへのインポートについて

    datファイル(固定長)をテキストに変換してからACCESSにインポートする、というやり方をした時、改行コードがなくサイズが大きいためか処理が中断してしまい、インポートできません。 ためしに件数を減らすと、インポートはできますが1レコードとして見えてしまうので、処理上都合が悪い状況です。 このようなデータをインポートするのに良いやり方があれば教えてください。 1ファイルあたりの最大サイズは、1000 * 800件です。 ACCESS2000を使用。

その他の回答 (2)

  • 回答No.2
  • timber
  • ベストアンサー率29% (218/739)

ではバッチを作成して copy B\zero.txt B\注文済み.txt for %%f in (A\注文*.txt) do copy /b B\注文済み.txt+%%f+B\改行.txt B\注文済み.txt 起動条件 1.メールで送られてきたファイルはフォルダAにある 2.フォルダAには上記以外のファイルは存在しない 3.なので当然AとBは別のフォルダ 4.起動前に注文済み.txtは存在しない 5.改行.txt は改行のみのファイル、zero.txtは0バイトのファイル 動作検証はWin2000で行いましたが、Win98でも動くと思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • timber
  • ベストアンサー率29% (218/739)

一番簡単で分かりやすいのは、 改行だけのファイルを作っておき、 コピーするときに間に入れていくことです。 copy a.txt + 改行.txt + b.txt + 改行.txt + ・・・

共感・感謝の気持ちを伝えよう!

質問者からの補足

速攻の回答ありがとうございます。 注文030205001.txt 注文030205002.txt 注文030205003.txt みたいなファイル名で来ますので、注文済み.txtを作成し、copy 注文*.txt 注文済み.txt としております。説明が足りずにすみませんでした。ここに改行を入れたいにですが...

関連するQ&A

  • excel→accessへのインポートがうまくいきません。

    access2000を使っています。 excel2002のデータをaccessへインポートしようとしているのですが、ブランクのフィールド(セル)を1つでも含むレコード(行)はインポートされません。言い換えれば、全てデータの満たされている行しかインポートされないのです。何故でしょうか?

  • AccessからOracleへの外部結合

    AccessのテーブルからOracleのテーブルに外部結合した場合、遅くなるのはなぜでしょうか。対策はありますか。 AccessのテーブルからOracleのテーブルとほぼ同じ内容のサーバー上のAccessのテーブルに外部結合しても遅くない(数秒)ですがOracleのテーブルに外部結合すると30秒以上かかります。Accessの結合元のテーブル約3万件、Orcaleのテーブル約25万件です。 Oracleのテーブルに内部結合した場合は数秒です。 Access2000/Oracle8.0.5です。

  • Accessにインポートしたら並び順が変わっちゃった

    Access2000 を使っています。 ExcelデータをAccessテーブルにしようとしましたが、全項目をテキスト型で入れたいのに、自動的に各項目の型が変わってしまうので、一旦CSVに落としてAccessにインポートしました。 ところが、インポートされたテーブルではレコード順が違っちゃっているんです。 総数は変わっていませんから、全て入ってはいるんでしょうが。 いったい何がいけないんでしょうか。多量のデータをインポートするのに不安でいけません。誰か教えて下さい。

  • ACCESSの改行

    ACCESS2000を使用しています。 エクセルのシートを 同一セル内に2行以上入力してあるものがあり、エクセルでは書式の折り返して表示していますが、アクセスにインポートしフォームで表示したところ、改行がエクセルのシートと同じにならず、テキストボックスの幅で改行されてしまいます。 エクセルのシートと同じ用にフォームで表示させたいのですが、どうすればいよいでしょうか? 例 セルA ------------ |AAA | |222 | ------------

  • VBAでテキストファイルの件数を調べる方法

    Access2000のVBAで関数を使用して ファイルのパス名、ファイル名を指定すれば、 テキストファイルの件数を検索し変数に返す 関数はありませんか?     通常テキストファイルを開き1件1件カウントを 取っていけば件数を知ることは可能ですが、 数千レコードのテキストファイルが複数個存在 する場合処理スピードが遅くなるため何か 最適な関数はありませんか? よろしくお願い致します。

  • 途中で改行されたCSVをAccessに正常に取り込むには?

    以下のようなCSVファイルがあり、これをAccessにインポートしようとしています。 フィールド1  数字7桁 フィールド2  数字2桁 ・・・・・    フィールド20 テキスト42桁 ・・・ フィールド26 数字13桁 ただ、レコードの中には長すぎるためか途中で改行されてしまっている レコードがあり、レコードが途中で切れてしまい、続きが次の行に 読み込まれると言う少し困った状態になっています。 (見たところ、フィールド20で切れているようです) 数箇所なら元のCSVを修正してから取り込めばいいのですが、全体が約80万件で、 そのうち200件以上はあるため、手作業でなく何か自動的に直す方法で対処したいと思っています。 (元のCSV自体が読み込みが重いため、手作業は困難です・・) Accessに取り込むためのいい方法はないでしょうか? OSはWinXPのSP2、Accessは2003です。

  • officeでのOLEについて

    もともとはEXCEL2000XPのVBAでマクロを作り、ACCESS2000のMDBを使用しています。 これはうまく機能しています。 これを、ACCESS97に落としたら、EXCEL2000からMDBを参照すると、NOMATCHがうまく機能してくれません。  インデックキーでテーブルを読みに行くのですが、NOMATCHでは、レコードがあるにもかかわらず、常にTRUEになってしまいます。  ACCESS97へのコンバート処理は、ACCESS2000にて旧バージョンへの変換を使用しました。  それに、ACCESS97でも、NOMATCHがうまく機能していません。 ACCESSはデータとプログラムと別々に作成しており、テーブルのリンクで結合しています。  アドインに問題があるのかな、と思ったりしているのですが良く分かりません。 どなたか御教授願います。

  • ACCESS2000のクエリでワイルドカード検索したい

    ACCESS2000のクエリでフォームで入力した内容でワイルドカード検索しようと抽出条件に Like "|Forms![フォーム名]![フィールド名]|*"と指定しましたが、上手くいきません。 ACCESS2.0では、これで上手くいったのですがACCESS2000 では指定の仕方が違うのでしょうか? どなたか教えて下さい。

  • アクセス2000のレポートについて

    アクセス2000でデータ-ベースを作成しています。 名称と住所を英語で入力する必要があるデータがあり、このデータをレポートで出力しようとすると、下記のように文字の途中で改行してしまうのですが、どうにかならないでしょうか?全て短いデータだけなら、改行しなくてもすむように、レポートで充分に広い幅を採ればいいのですが、長いデータもあり、どうしてもレポートで改行する必要があるのですが.... レコード  microsoft access2000 レポート micrsoft acce ss2000 できれば、下記のようにレポートで出力したいのですが: レコード microsoft access2000 レポート microsoft access2000

  • Access2003の排他モードで開くとファイルが開けません。その左側に表示されるレ点の意味は何でしょうか?

    Access2000からAccess2003にインポートをしました。 そうしたらAccess2003の方を排他モードで開こうとするとファイルが開けません。 「排他モードで開く」の左側にレ点のチェックが入っているのです。他の誰かが開いているときは開けません。誰も開いていないときは開けます。 このレ点の意味は何だったでしょうか? そのファイルのオプションの設定は「共有モード」になっています。 Access2000の方はその現象が起きません。 ということは、バージョン換えでインポートするときにおかしくなってしまったのでしょうか? よろしければ教えてください。