人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: WATANABE
●カテゴリ:コンピュータ
✍キーワード:エクセル コピペ コピー セル ソフト
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● SALINGER
●30ポイント ベストアンサー

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
◎質問者からの返答

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


2 ● Mook
●24ポイント

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列に内容が張り付きますので、あとは事由に処理してください。


3 ● memo77
●22ポイント

これとか。

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

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

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


4 ● leona_simasima
●22ポイント
  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がうまいこと処理してくれるような感じです.

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ