ここから本文です

excel VBAで,ダイアログで複数テキストファイルを選択して、その中身をすべてエク...

fre********さん

2019/4/719:17:11

excel VBAで,ダイアログで複数テキストファイルを選択して、その中身をすべてエクセルに1行ずつ書き込みたいのですが、どうしたらよいのでしょうか。

閲覧数:
37
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kir********さん

2019/4/810:34:24

こんな感じかと。

Sub 複数のテキストファイルを取り込み()
Dim fpath, itm, buf
Dim itmpath As String, n As Long, r As Long
Application.ScreenUpdating = False
fpath = Application.GetOpenFilename _
(fileFilter:="テキストファイル,*.txt", Title:="ファイルを選択してください(複数選択可)。", MultiSelect:=True)
If IsArray(fpath) = True Then
Workbooks.Add
ActiveSheet.Name = "テキスト結合"
With Sheets("テキスト結合")
n = FreeFile
For Each itm In fpath
itmpath = CStr(itm)
Open itmpath For Input As #n
Do Until EOF(1)
Line Input #n, buf
r = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(r, 1) = buf
Loop
Close #n
Next itm
End With
ElseIf fpath = False Then
Exit Sub
End If
Application.ScreenUpdating = True
MsgBox "END"
End Sub

ベストアンサー以外の回答

1〜1件/1件中

mn1********さん

2019/4/800:00:59

私の知識では「ダイヤログで複数選択して1行ずつ取込」はかなり難しいので、代替案です。
取り込むコードを書いたエクセルと同じフォルダに入っているテキストファイルを取り込むというものです。
処理速度も速いですよ。

Sub sample()
Dim myPath As String, myFile As String
Dim n As Integer, i As Long
Dim buf As String
myPath = ThisWorkbook.Path
myFile = Dir(myPath & "\*.txt")
n = FreeFile

Do
If myFile = "" Then Exit Sub
Open myPath & "\" & myFile For Input As #n
Do Until EOF(n)
i = i + 1
Line Input #n, buf
Cells(i, 1) = buf
Loop
Close #n
myFile = Dir()
Loop
End Sub

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる