テキストファイルが1000ファイルあります。1テキストファイル内の文章(改行ありの複数行)を、エクセルの1セル内にコピーしたいのですが、いちいちファイルを開いてコピペする他ないのでしょうか?

1000ファイルだととても手間ですので、何か簡単な方法、ソフトなどないでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2007/05/20 23:57:17
  • 終了:2007/05/21 10:23:33

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/05/21 00:32:41

ポイント30pt

VBAでA列のセルに全てのファイルを書き込むマクロ

Sub Macro()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim FolderPath As String
    'ここのアドレスをファイルが格納されているフォルダのパスに変えてください
    FolderPath = "H:\Documents and Settings\asano\デスクトップ\TEST"

    Dim myFile As Object
    Dim i As Long
    i = 1
    For Each myFile In fso.GetFolder(FolderPath).Files
        Cells(i, 1).Value = fso.OpenTextFile(myFile.Path).ReadAll()
        i = i + 1
    Next
End Sub
id:WATANABE

ありがとうございます。これで手間が省けました。

2007/05/21 10:21:43

その他の回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/05/21 00:32:41ここでベストアンサー

ポイント30pt

VBAでA列のセルに全てのファイルを書き込むマクロ

Sub Macro()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim FolderPath As String
    'ここのアドレスをファイルが格納されているフォルダのパスに変えてください
    FolderPath = "H:\Documents and Settings\asano\デスクトップ\TEST"

    Dim myFile As Object
    Dim i As Long
    i = 1
    For Each myFile In fso.GetFolder(FolderPath).Files
        Cells(i, 1).Value = fso.OpenTextFile(myFile.Path).ReadAll()
        i = i + 1
    Next
End Sub
id:WATANABE

ありがとうございます。これで手間が省けました。

2007/05/21 10:21:43
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/05/21 00:29:44

ポイント24pt

EXCEL の VBA での処理例です。


(1)新しいシートの A1 にテキストファイルの入ったフォルダ名を書いてください。

(注:フォルダ内のすべてのファイルを読み込みますので、テキスト以外のファイルを置かないでください。)

(2)下のコードを、シートタブで右クリック⇒「コードの表示」で表示されたウィンドウに貼り付けます。

(3)シートに戻って、Alt+F8を押して、「シート名!loadTextFiles」 を選択して、実行を押します。

Sub loadTextFiles()
    Dim folderPath As String
    folderPath = Range("A1").Value
    
    '--- フォルダのチェック
    With CreateObject("Scripting.FileSystemObject")
        If .folderExists(folderPath) = False Then
            MsgBox folderPath & "はありません"
        End If
    
        Dim lineNum As Long
        lineNum = 2
        Dim aFile As Object
        For Each aFile In .getFolder(folderPath).Files
    '--- ファイルの読み込み
             Cells(lineNum, "A").Value = aFile.Name
           Cells(lineNum, "B").Value = .OpenTextFile(aFile.Path).readall()
           lineNum = lineNum + 1
        Next
    End With
End Sub

これで、A2以下 A列にファイル名、B列に内容が張り付きますので、あとは事由に処理してください。

id:memo77 No.3

memo77回答回数238ベストアンサー獲得回数202007/05/21 00:25:06

ポイント22pt

これとか。

http://www.vector.co.jp/soft/win95/util/se347042.html

気に入らなければ、ここから「連結」で探せばいろいろありますよ。

http://www.vector.co.jp/vpack/filearea/win/util/text/

id:leona_simasima No.4

leona_simasima回答回数17ベストアンサー獲得回数32007/05/21 01:37:12

ポイント22pt
  1. 処理対象のテキストファイルはひとつのフォルダ内にある
  2. テキストファイル内に,「"」 (半角ダブルクォート)が含まれない
  3. Excelの,A1, B1, C1, ... セル内に内容を挿入する
  4. 各セルの先頭と末尾に余分な改行が入るけど気にしない

...という前提のもとに,次のようなバッチファイルはどうでしょうか.

処理対象のテキストファイルと同じフォルダに入れて実行すると, result.csv というファイルが出来るので,エクセルで読み込んでください.

読み込み時には「ファイルの種類」で「すべてのファイル(*.*)」を選択してください.


[txt2csv.bat]

echo off
set OUT=result.csv
del %OUT% 2> NULL

for %%i in ( *.txt ) do (
  echo ^" >> %OUT%
  type %%i >> %OUT%
  echo ^" >> %OUT%
)

バッチファイルなんて久しぶりに書きました.MS-DOSの頃から色々拡張されてるらしいですが,やっぱりだいぶ貧弱ですね.便利機能を知らないだけかも知れませんが.


※前提の2番は,あまり気にしなくても良いようです.Excelがうまいこと処理してくれるような感じです.

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません