• ベストアンサー

VBAでテキストファイルのデータを読み込んでexcel又はcvsファイルに書き出したい

テキストファイルのデータを読み込んで新しくエクセルファイルに書き出してテキストファイルを閉じたいのですがどのようにすればよいでしょうか? テキストファイル 32.1 23.5 12.1 325 12  325 スペースで区切ってあります。 あくまで、これは毎日100回近い繰り返しを行うために必要なのでVBA又はVBE是非教えて頂けたらと思います。ただ、説明が長くなりご迷惑をお掛けするようであれば作成にあたり必要なステートメントなんどのキーワードだけでも結構です。宜しくお願い致します。

  • e-l
  • お礼率45% (158/349)

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

  • ベストアンサー
  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.6

>すいません、Execute>0の意味を教えていただけたらと思います。 VBEのヘルプによれば、 FileSearch オブジェクトの Execute メソッド →指定したファイルの検索を開始します。長整数型 (Long) の値を返します。ファイルが見つからなかった場合は 0、1 つ以上のファイルが見つかった場合は正の数を返します。 とあります。txtファイルがあるかどうかの判定です。 ちなみに、VBEとはVisualBasicEditorのことであって、言語ではないです。 勉強というか、とりあえずこのコードをVBEに貼り付けて、フォルダ作ってファイル入れてマクロ実行すればできないですかね? 私も初心者ですが、そんなこと人に言っても仕方ないので、検索したりヘルプみたり普通に質問したりしてなんとかやってます。 それでは、いい加減帰らないと終電なくなりますので、失礼いたします。

e-l
質問者

お礼

お忙しいところ大変ご親切に有難う御座いました。大変助かりました。明日も頑張ってください。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

データ-区切り位置を使ってセルに納められると思います。 それをマクロの記録を取ると(一部省略) Sub Macro1() Range("A1:B4").Select With Selection .MergeCells = False End With Range("A1:A4").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(6, 1)) End Sub 質問の例の4行(4レコード)の場合です。どこを本番では変えるべきか、検討されてはどうでしょう。

  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.4

すみません、スペース区切りだって忘れてました。 これでどうですか。 Sub test() With Application.FileSearch ' ↓このフォルダの中のファイルを処理 .LookIn = "C:\aaaa" .Filename = "*.txt" If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.OpenText Filename:=.FoundFiles(i), Origin:=932, StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _ Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _ , 1), Array(4, 1)), TrailingMinusNumbers:=True ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close False Next i MsgBox "全て終わりました。" Else MsgBox "このフォルダに.txtファイルはありません。" End If End With End Sub

e-l
質問者

補足

再度有難う御座います。 すいません、Execute>0の意味を教えていただけたらと思います。

  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.3

手元にコードがあったので、いじってみました。 これでどうですか? 私は#1のほうがいいですけど。 その方が処理がずっと速いと思うので。 Sub test() With Application.FileSearch         ' ↓このフォルダの中のファイルを処理 .LookIn = "C:\aaaa" .Filename = "*.txt" If .Execute > 0 Then For i = 1 To .FoundFiles.Count Workbooks.Open Filename:=.FoundFiles(i) ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close False Next i MsgBox "全て終わりました。" Else MsgBox "このフォルダに.txtファイルはありません。" End If End With End Sub

e-l
質問者

お礼

本当に有難う御座います。初心者なもので助かります。今日中に理解して使えるようにしたいと思います。勉強させて頂きます。

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.2

参考までに、上記のファイル=E:\text\test.txtファイルを読み込んで、(スペース区切り)E:\text\text.xlsに掃き出すMACRO(VBA) Sub Macro1() Workbooks.OpenText Filename:="E:\text\test.txt", StartRow:=1, DataType:= _ xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab _ :=False, Semicolon:=False, Comma:=False, Space:=True, Other:=False, _ FieldInfo:=Array(Array(1, 1), Array(2, 1)) ActiveWorkbook.SaveAs Filename:="E:\text\test.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub

e-l
質問者

お礼

大変助かります、有難う御座います。一つ一つ理解させていただきます。

  • akamanbo
  • ベストアンサー率17% (462/2680)
回答No.1

すみません、いきなり汎用性の無い方法になってしまいますが、私がそのような作業を行うのであれば、textファイル中のスペースをまとめてタブに置換し、然る後にまとめて全ての拡張子.txtを.csvにします。 csvの中身はただのタブ区切りテキストなので。 一括置換に使っているソフトはこちら http://www.vector.co.jp/soft/win95/util/se142895.html ※正規表現だとタブは「\t」 ファイルのリネームに使っているのはこちら http://www.vector.co.jp/soft/win95/util/se131133.html

e-l
質問者

お礼

有難う御座います。参考にさせていただきます。

関連するQ&A

  • テキストファイルのデータをエクセルファイルに書き出し方

    テキストファイルのデータを読み込んで新しくエクセルファイルに書き出してテキストファイルを閉じたいのですがどのようにすればよいでしょうか? テキストファイル 32.1 23.5 12.1 325 12  325 スペースで区切ってあります。 あくまで、これは毎日100回近い繰り返しを行うために必要なので是非教えていただけたらと思います。

  • VBAでDOS-V形式のデータをエクセルに表示、保存したい。

    DOS-V形式のデータをエクセルに表示、保存できるでしょうか?VBAを使用してそのようにするためにはどういったことをすればよいでしょうか。それに必要なキーワード(ステートメント)とその簡単な説明を教えて頂きたいです。

  • VBAでテキストファイルからデータを読み込む方法

    VBAでテキストファイルからデータを読み込む方法を探しています。 コンマ区切りのデータを、エクセルに書き込みたいです。 テキストファイルにはコンマ区切りで6個のデータを書き込んであります。 それを、セルD3からD7に書き込む方法を教えていただきたいです。よろしくお願いします。

  • (ACCESS VBA)あるテキストファイルのデータを別のテキストに写す

    すいませんがたびたび質問させていただいていmynannです ACCESS VBAについての質問です まず商品マスタクエリに 商品コード 価格 001 \100 002 \150 003 \200 というデータがあり テキストファイル「text01.txt」に 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/」 この商品マスタの商品コードとtext01.txtで 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/001.html」 というようなファイルを出力するようなモジュールをつくろうと思っています 実際には商品コードは複雑ですし テキストファイルももっとたくさんの文章です で特に何を聞きたいかというと テキストファイルのテキストデータをどうやって 扱えばいいかがよくわかりません OPENステートメントとかつかうんでしょうか、、? どなたか助けてください!

  • vbaでテキストファイル(*.txt)を取込みたい

    vba初心者です。 Application.Dialogs(xlDialogOpen).Showで選択したテキストファイル(***.txt)をテキストファイルウィザードで、タブ、カンマ、スペース区切りで、エクセルファイルに取り込むマクロを組みたいのですが? 何度やってもうまくいきません。 ご教示願えないでしょうか! excel2002を使用してます。 よろしくお願いします。

  • access VBA でテキストファイルの編集をしたい

    既に退社した前任者の代から受注データを本社のサーバからダウンロードしてエクセルで加工するファイルがあるのですが、日々更新されるのも不都合が出てきましたのでなんとかアクセスのデータに日々蓄積したくなりました。 毎日日付を含む名前のファイルがアップされFTPで○月○日のファイルを受信するのですが、バッチファイルとテキストファイルをを使ってFTPの受信をしていました。 1、VBAでテキストファイルの日付を変更する。(任意の日付) 2、VBAからバッチファイルを実行し、先に変更した日付のファイルを受信する。 これをアクセスで同じことをしたいです。 フォームにテキストボックスを作って、そこに日付を入れるようにして、VBAでテキストファイルの日付をテキストボックスにある日付に変更して、それから・・・まだ工程はあるのですが、まずテキストファイルが変更できないと先へ進めません。 エクセルのVBAは少しは判るのですが、accessVBAは初心者です。 よろしくお願いします

  • VBAでテキストファイルからの特定行抽出

    エクセルのVBAで、テキストファイルから、特定の文字を含まない行だけを、別のテキストファイルに取り出す方法を教えてください。 具体的には、元のテキストファイルの中から、「.png」と、「.jpg」を含まない行を取り出して、別のテキストファイルに書き出したい。 元のテキストファイルは、エクセルでそのまま読み込むにはデータが大きすぎてエラーになってしまうので、、VBAで不要なデータを取り除いて、ファイルを小さくしていって、エクセルで扱える大きさにしていこうと思っています。 どなたかおわかりになる方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • VBAでテキストファイルをEXCELに取り込む方法

    VBA初心者です。下記の要件の動きについてどう組めば良いのかほぼ???の為、どなたか回答よろしくお願いします。 ・インポート時はテキストを毎回選択する。←これは何とか実装できています。 ・インポートされたテキストファイルは「テキストファイル名」で別作成する。このインポート先Excelファイルには項目は定型で作成されており、行途中から、データの貼り付けを行いたい。 ・このExcelファイルには罫線を挿入したい。 以上です。何だか詳しい内容がかけなくてゴメンナサイ!

  • VBAでEXCELから固定長のテキストデータにしたい

    VBAにてEXCELに展開されたデータを固定長のテキストデータに落としたい。 EXCEL側の用件 (1)シート1にボタンを用意して、ボタンをクリックしたらテキストファイルを作成する処理にしたい。 (2)シート2にデータが展開されている。 列は10個程度、行は場合によりけり(MAX65536?) 固定長にする箇所とかはわかるのですが、ボタンクリックしたらシート2を見て、セル(もしくはrange)をどのように取得すればいいのかVBAがよくわからないのです。

  • VBAでテキストファイルのデータを読み込んでExcelで開く+α

    テキストファイルをExcelファイルとして読み込む事が多く、その量に加えデータの並び方が特殊な為困っております。 テキストファイルのデータの並びをExcelで上下逆順に読み込ませるにはどのようにすればいいでしょうか? また、まとめて複数のテキストファイルを上記の状態で自動的にシートごとに分けて出力させたりしたいのですが。 (例-1行目は無視) ---テキストデータ(タブ区切り)--- 0 0 10 02 11 05 02 15 01 20 25 12 15 10 ---Excelシートデータ--- 0 0 12 15 10 01 20 25 05 02 15 10 02 11

専門家に質問してみよう