- ベストアンサー
テキストファイルのデータをエクセルへコピーのやり方
よろしくお願いします。 エクセル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行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。 良い解決法をお願いします。
- みんなの回答 (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
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
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レコードはペアであること。
お礼
回答ありがとうございます。 早速、指示されたとおりにやってみるとできました。 しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・ とりいそぎお礼を申し上げます。
補足
VBAはよくわからないのですが、 なんとかやりたいことができました! ありがとうございました。
#2です。 肝心のことを書き忘れていました(^_^;)。 そうやって、区切りにTabが入った文字列を、そのままコピーして、 その後、エクセル上で開始する左上のセルにカーソルを合わせてからペーストしてやると、そこにきちんとセルにわかれた状態で収まるはずです
お礼
早速の回答ありがとうございました。 データの長さの違う「区切り位置」はうまくいったみたいです。 すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。
テキストデータの(区切りに使っている)スペースを、いったんすべてtabに置換すると可能です。 Tabへの置換方法ですが、WZエディターというソフトの場合、検索文字「 」(空白)、置換文字「\t」と指定します。 また、メモ帳の場合、いったんTabをエディターか何かで入力して、それをコピー、そして、検索文字に「 」(空白)、置換文字にペーストをするとTabが入りますから、全部置換を指定するとできます。
- arukamun
- ベストアンサー率35% (842/2394)
まず、テキストファイルのデータをメモ帳などで、スペースをカンマに置換します。 それをエクセルで、カンマ区切りで開けば良いと思いますが、いかがですか?
お礼
早速の回答ありがとうございました。 データの長さの違う「区切り位置」はうまくいったみたいです。 すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。
お礼
回答ありがとうございます。 早速、指示されたとおりにやってみるとできました。 しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・ とりいそぎお礼を申し上げます。
補足
VBAはよくわからないのですが、 なんとかやりたいことができました! ありがとうございました。