• ベストアンサー

TXTファイルデーターをEXCELで読み込む

Aというテキストファイルがあります。 そのファイルのは、 1 12 123 1234 という様なスペースで分けられた文字列が並んでいます。 これを、新規作成したEXCELファイルで読み込みたいのですが、出来ますでしょうか? 現状は、テキストファイルをスペース区切りでEXCELに変換しているのですが、ファイル量が多くなりそうで手間がかかります。 ですので、テキストファイルから直接読み取りEXCELに貼り付けたいのです。(自動リンクのイメージでリンク元がAというテキストファイル) 以上、ご教示お願い致します。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.9

#8 です。 データの様子や動作仕様で不明な点はありますが、とりあえず現状の VBA コードをアップしてみます。 リンクってのがよく分かりませんが、テキストのインポートでやりました。 下記のコードを実行すると、次の動作を行います。 1. このコードが書かれた同一フォルダ内の D*.txt をDOSコマンドで連結   し、ファイル MergeData.txt に出力します。 2. MergeData.txt のデータを行単位でメモリ上に読み込みます。 3. 2.をアクティブシートのセルに展開します。 4. 最後にスペース区切りで各要素をセルに分割します。 なお、動作確認は WindowsXPsp2 + Excel2002sp3 の環境です。 30個程度のファイルなら、ループで回しても良かったのですが、何となく、、 ちなみに、テキストファイル毎に1枚のシートであれば、これはボツですね。 Option Explicit Declare Function SetCurrentDirectory Lib "kernel32" _   Alias "SetCurrentDirectoryA" _   (ByVal lpPathName As String) As Long Sub InportTextFile_Sample()      Const ForReading& = 1, ForWriting& = 2, ForAppending& = 8   Const BufSize& = 2000 '2000行      Dim objShell As Object   Dim FS    As Object, TS As Object   Dim Buf()  As String   Dim i    As Long   Dim strPath As String      'カレントディレクトリー設定   strPath = ThisWorkbook.Path   SetCurrentDirectory strPath      'テキストファイルマージ   Set objShell = CreateObject("WScript.Shell")     objShell.Run "%ComSpec% /c COPY /b D*.txt MergeData.txt", 0, True   Set objShell = Nothing      'データバッファ   ReDim Buf(BufSize)   strPath = strPath & "\MergeData.txt"   Set FS = CreateObject("Scripting.FileSystemObject")   Set TS = FS.OpenTextFile(strPath, ForReading)     Do Until TS.AtEndOfStream       Buf(i) = Trim$(CStr(TS.ReadLine))       i = i + 1       If i > 65536 Then Exit Do       If Not i Mod BufSize Then         ReDim Preserve Buf(i + BufSize)       End If     Loop     ReDim Preserve Buf(i)     TS.Close   Set TS = Nothing: Set FS = Nothing      'セルに書き込み   Application.ScreenUpdating = False   ActiveSheet.Range("A1") _     .Resize(UBound(Buf) + 1).Value = Application.Transpose(Buf)      'バッファクリア   Erase Buf      'ソートするならここに書く      '要素分割(SP区切り)   ActiveSheet.Columns("A:A").TextToColumns _     DataType:=xlDelimited, _     TextQualifier:=xlDoubleQuote, _     ConsecutiveDelimiter:=True, _     Space:=True   Application.ScreenUpdating = True   MsgBox "終了しました.", vbInformation End Sub

kohrem
質問者

お礼

丁寧なご説明ありがとうございます。 やはり、VBAになりますかぁ・・・ ◆1点目 問)テキストファイル毎に1枚のシートにするのですか? 捕)できればそうしたいと考えています。理由は、内線の発呼が2千/日以内と決まっているわけでは無い為、#8様が仰るように、1つのシートにまとめると行数不足になる恐れがあるためです・・・ ◆2点目 問)処理効率からの点で・・・ 捕)やはり、インポートしないと無理ですか・・・   自動作成される課金レポートの中身は以下のようになっています。 ・内線番号 通話日時 発信先  ↑このフォーマットでその日のうちの発呼分(おおよそ2千) これを、インポートすればそれぞれ、A1,B1,C1に入ってくれるので、後は普通に計算できるのですが、これではこのインポート作業を1ヶ月分(30ファイル)行う必要がありますよね?ただこれを、#5様にご教示頂いたソフトで一括ファイルにしてしまえば1回のインポートで済むのですが、行数に不安があります。 なので、できるならば、インポートせずに(テキストファイルをいじることなく)計算用ファイルに1ファイル/1シートで読み込ませたかったのです・・・ ◆3点目 問)インポートの際に邪魔になりそうなものはありませんか? 捕)特にありません。 この場をお借りして・・・ この様な稚拙な質問に対し皆様方には大変役立つご回答して頂き、ありがとうございます。  今回の内容を自分なりにもう一度考えて、また必要な時に再質問させて頂きますので、いったん、閉めさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (8)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.8

こんにちは。KenKen_SP です。 フォルダ内のファイルを一括処理するなら VBA による方法になると 思います。 ◆1点目 > 社内電話の課金日報レポートが毎日01:00のテキストファイルで作成 > されます。(おおよそ2千行) どうやら集計したいみたいなので、1つシートに1ヶ月分のテキストの データをインポートする仕組みでコードを書いていたのですが、 #6 の方の書き込みをみて、次のことに気が付きました(汗) 2,000行/1日であれば1ヶ月なら、2,000行×最大31日=62,000行... になりますので、Excel ではちょっと厳しいですね.....行が不足し そうです。テキストファイル毎に1枚のシートにするのですか? 1つのシートにまとめたい、、と考えているなら ACCESS の方が良さ そうです。 ◆2点目 処理効率からの点で、予めテキストファイルを連結させてからインポー トする方法を考えました。インポートした後で、ソートのキーとなる フィールド(列)はありますか? ◆3点目 テキストデータは1行目に見出しなり、インポートの際に邪魔になりそう なものはありませんか?

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

>、1つのセルに全ての列が入ってしまいました・・・(;_;) これは、タブ区切りではないという これは当たり前。 この後、メニューのデーターデータ区切り、でスペースを区切りに指定して ウイザードの指示に従えば、各フィールドに分離してくれます。 >ファイル量が多くなりそうで手間がかかります 上記操作はデータ量で差が出るものではない。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.6

#5です。1個のテキストファイルを1枚のシートにするのかな?だとすると#5は関係ないので無視してください。#4さんのおっしゃるようにTABにすれば簡単だと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#223623
noname#223623
回答No.5

問題がよくわからないのですが、テキストファイルが多くてExcelでいちいち開くのが大変、ということですか? テキストファイルを1つにまとめていっぺんに処理するのではだめなのかな? 開き方は#1、#3さんのやり方で。 質問を読むと空白で区切るのが大変、ともとれるのですが... ↓テキストファイルをまとめるツール

参考URL:
http://www.vector.co.jp/soft/win95/util/se347042.html
全文を見る
すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.4

#1で回答した者です。 では、ちょっと視点を変えてスペース区切りではなく、タブ区切りで変換することは出来ないでしょうか? タブ区切りになっていれば、ファイルをドラッグ&ドロップするだけで、 ご希望の形式でEXCELに展開されると思います。

kohrem
質問者

補足

再度のご回答ありがとうございます。 教えていただいた事を試してみました!・・・ が、1つのセルに全ての列が入ってしまいました・・・(;_;) これは、タブ区切りではないという事でしょうか? ちなみに、大変言い辛いのですが、この内容は私の希望する事とは違います・・・ んー・・・どうもうまく伝わりませんねぇ、すみませんm(_ _)m 私の希望する手順を書いてみます。 1.課金用テキストファイルが1つ/1日自動作成(フォーマット決まっている)される。 2.”1”のファイルが一月分(30ファイル)出来上がる。 3.そのファイルを所定のフォルダに入れる。 4.”2”と同じフォルダ内にある課金料金計算用EXCELファイルを開く ※計算用ファイルは事前に作成(リンク元はテキストファイル) 5.内線毎の利用状態が計算されている。 以上です。 これは、元データーが既にEXCELファイルでしたら問題なく可能ですよね? ですが、テキストファイルなので、皆様が仰るように種種の方法でいったんEXCELに変換し、保存→そのファイルにリンクさせる。 手順でいえば、 1および2,3の手順は同じ 4.テキストファイルをEXCELで読み出し、拡張子を.xlsに変えて保存。 5.”3”の手順を一月分のファイル数(約30個)だけ繰り返し行う。 6.これより後は、希望手順と同じ。 以上ですが、わかりますか?

全文を見る
すると、全ての回答が全文表示されます。
  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.3

データ-外部データの取り込み-テキストファイルのインポート から、#1さんのテキストファイルウィザードを実行してみてください。 貼り付けられたセルを選択して「データの更新」とすると元のファイルの内容を再び読み込みます。 「データベースクエリ」でも同じことができそうですが、空白区切りの処理の仕方がわかりませんでした。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

ご質問は単純に テキストをリンク貼り付けしたい・・・ということですか? その場合、EXCELでそのデータを今後加工して使用していくという前提はあると考えていいのでしょうか? それとも以下のようなことでしょうか? データ入力されたソフトが存在。 そこからテキスト書き出しで何種類かテキストファイルを作成した。 EXCELで読み込むとファイル量が多いので処理が大変。 ↓ データ入力してあるソフトから自動的にEXCELに読み込む方法がしりたい。 どちらでしょう・・・?

kohrem
質問者

補足

ご回答ありがとうございます。 テキストをリンク貼り付けしたい・・・ と、言う事ですね。正確に申しますと、リンク貼り付けの操作を手動ではなく自動でなのです。 詳細をいいますと、 社内電話の課金日報レポートが毎日01:00のテキストファイルで作成されます。(おおよそ2千行) これを内線番号別に料金を割り振る為、EXCELで計算したいのですが、元データーがテキストファイルなので、いったん、No1,3様が仰る操作でEXCELベースに変換させて、文字列を認識させていますが、課金情報で必要なのは1ヶ月単位の為、月末に処理する事となり、毎月30又は31日のテキストファイルを繰り返し変換して認識させなければならず面倒です(^_^; 従って、料金計算用のEXCELファイルにはあらかじめ、リンク元を指定入力しておき、(A1にテキストファイル名+データー入力セル?)月末のファイルが出揃った時に一括して30ないし31のテキストファイルを料金計算用EXCELファイルの指定したフォルダに入れる事で自動計算したい・・・という事なのですが、意味わかりますか? 尚、自動作成される課金レポートファイル(テキスト)名は、 D年月日です。 例えば、2005/09/01ですと、 D050901となります。 以上です。

全文を見る
すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

Excelを先に起動し、ファイルメニューから開くを選択して、上記のようなテキストファイルを指定してあげると、データの変換ウィザードが出てきます。 これで区切り文字をスペースとして選択してやるとエクセルの形式で開くことが出来ます。 1 12 123 1234 というファイルの場合、 セルA1に「1」、B1に「12」、C1に「123」、D1に「1234」 となります。 あとはエクセル形式で保存してあげるだけです。 と、こういう回答でよかったのでしょうか? 検討違いだったらすいません。

kohrem
質問者

補足

早速のご回答ありがとうございます。 私の説明不足で申し訳ありません。 No1ご回答者様の方法はごもっともなのですが、この方法ではテキストファイルが多い場合大変です。 なので、テキストファイルを開くことなく、読み込み、ご回答者様が仰るような配列(A1に1,B1に12・・・)で表示したいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • スペース区切りのテキストファイルをExcelで開く

    テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか

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

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

  • Excelをタブ区切りテキストに変換するとずれる

    現在Microsoft Excel 2010を利用しています。 タブ区切りのテキスト形式に変換する際、列がずれて変換されてしまいます。 同じファイルを別のPC(Microsoft Excel 2007)で試した場合、 問題なく変換されます。 エクセル側の設定の問題かとも思うのですが、どなたかご教示頂けますでしょうか。 よろしくお願いいたします。

  • 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

  • テキスト形式(.txt)をエクセルで読み込むときに1桁目の「0」を読み込みたい

    タブ区切りで作成されたテキストデータがあります。 これをエクセルで読み込むと、タブ区切りからセル区切りに自動的に変換されますが、 テキストに「0」から始まるデータがある場合、エクセルに変換されると数値として読み取ってしまうので、2桁目以降の0以外の数字を1桁目として認識してしまいます。 つまり、 「テキストデータを「文字列」のデータとしてエクセルで読み取る」 方法を探しています。 ご存知の方、教えてください。 よろしくお願いいたします。

  • ExcelでtxtファイルをVBAで読み込む方法

    スペース区切りのテキストファイル(拡張子はtxt)が有ります。 データは、数字ですが上桁には0が入っています。 00001 0003 010222 302033 00025 等のデータです。 このファイルを、ウイザードを使わずにVBAにて直接文字列(テキスト)として読み込むコマンドを失念してしまいました。 教えて下さい。宜しくお願い致します。

  • EXCELのA列に全て入ってしまったデータをセル毎に表示したい。

    あるホームページにTableタグで記述された表があります。 その表をドラッグ選択でコピーし、EXCEL2003にテキスト形式で貼り付けると、EXCELのA列に各行のデータが全て入ってしまいます。 tdタグ毎に、EXCELのセルに振り分けて表示したいのですが、どうすればよいでしょうか。 【試したこと】 1)文字コードを変換すればよいのかと思い、解らないながらもStirling1.31というソフトで文字コードをみると、列の間は[20]というコード?になっておりました。半角スペースで入力したデータも同じく[20]と出ますので、tdタグは半角スペースとして認識されているのでしょうか。 文字列にも普通に半角スペースがまぎれているので、tdのコードのみをどう変換したらよいのかわからず、閉じました。 2)EXCELのファイルをテキスト形式で保存し、開くときにスペース区切りを選んで、区切りたい位置をクリックして、"フィールドの幅"というものを設定したものの、文字の長さが行ごとに違うので固定の幅では上手くセル毎に振り分けられませんでした。 至らない説明で申し訳ありません。ホームページのデータをダイレクトにEXCLEにテキストで貼り付けるという方法からして間違っているのでしょうか。 600件以上あるデータで困っています。 詳しい方ご教授願います。 どうぞよろしくお願いいたします。

  • 列数の多いエクセルのデータをテキストファイル(スペース区切り)に変換するにはどうしたらいいでしょうか

    列数の多い(200列くらい)エクセルのファイルをテキストファイル(スペース区切り)1行に保存したいのですがどのようにしたらいいのでしょうか. エクセルを普通にテキスト形式で保存すると200列 1行で保存されず,適当に折り返して3行くらいになってしまいます. 例えば 2行200列をテキストにすると 1行目 1~100列 2行目 1~100列 1行目 101~200列 2行目 101~200列   と4行になってしまいます.これを 1行目 1~200列 2行目 1~200列   のようにしたいのですが可能でしょうか.

  • 固定長データのテキストファイルのスペースについて

    固定長データのテキストファイルをExcelで読み込むと、スペース部分が前詰めされてしまいます。 スペースもそのままカラムとして読み込む方法はありませんでしょうか。 例えば次のような固定長データがあるとします; No.  項目名   タイプ   桁数 1    コード    文字    6 2    状態    文字    10 テキストファイルで開くと下記のような表示です(以下、便宜上スペースを”_”で表します); data011________1 data02_________1 data03____1_____ これをExcelにて固定長フィールドのデータとして読み込む際、 フィールドの区切り位置として6カラム目と16カラム目に矢印を置き 全てのフィールドを文字列として読みこむとExcelでは下記のように表示されます;       A列   B列    1行目  data01 1________1 2行目  data02 1 3行目  data03 1 ここで、B2セルとB3セルがそれぞれ _________1 ____1_____ とスペースを保持したままの形で読み込む方法はありませんでしょうか。 手動でもVBでもかまいません。ご教示頂ければ幸いです。

  • エクセルへのデータ貼り付けについて

    メモ帳のテキストデータからエクセルへのデータ貼り付けをする際の質問です。 メモ帳のデータが、 aaa bbb のように2語をスペースで区切っているようなデータです。 これをそのままエクセルに貼り付けると、1列に「aaa bbb」とデータが貼り付けられるのですが、 これをA列に「aaa」、B列に「bbb」と、スペースを区切りとして各列にコピーしたいと考えています。 どのような方法で可能でしょうか?

このQ&Aのポイント
  • 久しぶりに倉庫から取り出してきたNSR-6S4BLBシリーズのLinuxNASですが、付属のACアダプターが見つかりません。
  • 動作に必要なACアダプターの規格は、12V、5.24Aであることが分かっていますが、DCプラグの規格が2つあります。
  • 購入するには、ACアダプターのタイプが5.5mmX2.1mmか5.5mmX2.5mmかを確認する必要があります。分かる方がいらっしゃったら教えてください。
回答を見る

専門家に質問してみよう