• ベストアンサー

テキストファイルのデータをエクセルへコピーのやり方

よろしくお願いします。 エクセル2000を使っています。 テキストのデータで A1/B1/C1    /はスペースです。 D1/E1/F1    データの長さは全部違います。 A2/B2/C2     D2/E2/F2 A3/B3/C3     D3/E3/F3      ・    ・(続く) といったものがあります。これをエクセルで    A列 B列 C列 D列 E列 1行 A1 B1 C1 D1 E1 2行 A2 B2 C2 D2 E2  ・・・ 3行 A3 B3 C3 D3 E3  (続く)          ・          ・(続く) という感じで別々のセルにいれて貼り付けしたいのです。 テキストデータを別々のセルに貼り付けする方法は 過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

データ並びが一定でなくても構わないようにしています。 テキスト何行を1行分にして読込むか、設定出来ます。(今は2行に設定) マクロを実行するとファイル名指定のダイアログがでますので、テキストファイルを 指定すると、アクティブシートにデータが読み込まれます。 宜しかったら詳しい手順を書きますのでテストしてみてください。 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を  「中」にして[OK]します。 6.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で  「テキスト複数行を1行で読込」を指定し、[実行]ボタンを押します。 Sub テキスト複数行を1行で読込() Dim FNum As Integer, R As Integer Dim Col As Integer Const RwSet As Integer = 2 '<-- 読取り行数単位指定 Dim N As Integer, Rw As Long Dim FileName, InData, Ary FileName = Application _ .GetOpenFilename("テキスト ファイル(*.csv;*.txt),*.csv;*.txt") If FileName = False Then Exit Sub FNum = FreeFile Open FileName For Input As FNum Col = 1: Rw = 1 Do Until EOF(FNum)   For R = 1 To RwSet     If EOF(FNum) Then Exit Do     Line Input #FNum, InData     Ary = Split(Trim(InData), " ")     For N = 0 To UBound(Ary)       Cells(Rw, Col).Value = Ary(N)       Col = Col + 1     Next N   Next R   Rw = Rw + 1   Col = 1 Loop Close #FNum End Sub

tadasi1971
質問者

お礼

回答ありがとうございます。 早速、指示されたとおりにやってみるとできました。 しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・ とりいそぎお礼を申し上げます。

tadasi1971
質問者

補足

VBAはよくわからないのですが、 なんとかやりたいことができました! ありがとうございました。

その他の回答 (4)

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

1列分が2レコードに別れているために、区切り位置では出きず、区切り文字をカンマやTABに変えてもだめだと思います。そこでVBAの登場です。 (テストデータ)メモ帳で aaaaa bbbb ccc dddd eeeeeee fff ggggg hhhhh ii jjjjjjj 名前を付けて保存でbbd.txtと言うファイルを作りました。 (VBAコード)エクセルのVBEの標準モジュールに Sub test01() Open "c:\my documents\bbd.txt" For Input As #1 j = 1 While (Not EOF(1)) Line Input #1, a b = Split(a, " ") For i = 0 To 2 Cells(j, i + 1) = b(i) Next i '---- Line Input #1, a b = Split(a, " ") For i = 0 To 1 Cells(j, i + 4) = b(i) Next i j = j + 1 Wend Close #1 End Sub を貼りつけて、実行します。 (結果)エクセルのシートに A列   B列    C列   D列    E列 aaaaa bbbb ccc dddd eeeeeee fff ggggg hhhhh ii jjjjjjj がセットされました。 本番の場合、どこを変えたら良いか判りますか。 ファイル名、スタート行j等でしょうか。 A-CとD-Fに来るレコードは、必ず2レコードはペアであること。

tadasi1971
質問者

お礼

回答ありがとうございます。 早速、指示されたとおりにやってみるとできました。 しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・ とりいそぎお礼を申し上げます。

tadasi1971
質問者

補足

VBAはよくわからないのですが、 なんとかやりたいことができました! ありがとうございました。

noname#13376
noname#13376
回答No.3

#2です。 肝心のことを書き忘れていました(^_^;)。 そうやって、区切りにTabが入った文字列を、そのままコピーして、 その後、エクセル上で開始する左上のセルにカーソルを合わせてからペーストしてやると、そこにきちんとセルにわかれた状態で収まるはずです

tadasi1971
質問者

お礼

早速の回答ありがとうございました。 データの長さの違う「区切り位置」はうまくいったみたいです。  すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。

noname#13376
noname#13376
回答No.2

テキストデータの(区切りに使っている)スペースを、いったんすべてtabに置換すると可能です。 Tabへの置換方法ですが、WZエディターというソフトの場合、検索文字「 」(空白)、置換文字「\t」と指定します。 また、メモ帳の場合、いったんTabをエディターか何かで入力して、それをコピー、そして、検索文字に「 」(空白)、置換文字にペーストをするとTabが入りますから、全部置換を指定するとできます。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

まず、テキストファイルのデータをメモ帳などで、スペースをカンマに置換します。 それをエクセルで、カンマ区切りで開けば良いと思いますが、いかがですか?

tadasi1971
質問者

お礼

早速の回答ありがとうございました。 データの長さの違う「区切り位置」はうまくいったみたいです。  すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。

関連するQ&A