エクセルのマクロを使用し、以下の内容を行う方法をご教示いただきたいです。
テキストファイル の中身をエクセルに入れ、シート名はファイルの名前にします。
ファイルの数だけ同じ名前のシートが作成される、というイメージです。
①1つのフォルダに格納されているテキスト(.txt)を上から順に、
テキストファイルの中身を一行ずつエクセルに書きこむ
②エクセルに書き込む際、テキストファイル名を、エクエルシートの名前にする
③テキストファイル の中身は、改行コードが入っているため、
手でコピーし、張り付けると、1つの列に上から順に反映される。
そのようにエクエルに貼り付けたいです。
④テキストファイルの中にあるテキスト量はファイルによってまちまち
複雑で、自分で挑戦したときにはエラーも起きず何も発生せずでした。。。
どうぞよろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
おはようございます。
>手でコピーし、張り付けると、1つの列に上から順に反映される。、、
上手く伝わっていませんが、改行コードとは何を指しているのかなーと思いますが
テキスト(.txt)と言う事で、抽出のやり方は、色々ありますが、あまり気にせず下記をサンプルにしました。
よく使うので、ファイル抽出部分とデータ抽出部分が分れています。2つ例を上げますが
元々データやCSVに使っているものなので、ほぼコピペの為、少し大げさかも知れません。
シート名は、既存にある場合、自動作成名になります。
シート作成は、メモリ依存ですが、1000ファイルとかある場合は、リミットを設定した方が良いかも知れません。
データ抽出部分は、簡単な
Open TrgFile For Input As #1
Do Until EOF(1)
Line Input #1, fileLine
Cells(i + 1, 1) = fileLine
i = i + 1
Loop
Close #1
で良いかもです。
サンプル
Sub InTxt_NewSheets()
Dim newWs As Worksheet
Dim i As Long, j As Long
Dim filePath As String, fileName As String
Dim Extension As String, Array_file() As String
Extension = ".txt"
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CreateObject("WScript.Shell").SpecialFolders("desktop")
If .Show = True Then
filePath = .SelectedItems(1) & "\"
End If
End With
If filePath = "" Then Exit Sub
fileName = Dir(filePath & "*" & Extension)
Do While fileName <> ""
ReDim Preserve Array_file(i)
Array_file(i) = fileName
i = i + 1
fileName = Dir()
Loop
For j = LBound(Array_file) To UBound(Array_file)
Set newWs = Worksheets.Add(After:=Sheets(Worksheets.Count))
' Call OpenDB(filePath, Array_file(j), newWs)
Call QTRF(filePath, Array_file(j), newWs)
On Error Resume Next '同名シートがあると1004の為 On Error Resume Next (name Sheet?
newWs.Name = Array_file(j)
Next j
MsgBox ("終了しました")
End Sub
’クエリテーブル
Private Sub QTRF(filePath As String, fileName As String, newWs)'上のままだとこれが実行されます。
With newWs.QueryTables.Add(Connection:="TEXT;" & _
filePath & fileName, Destination:=newWs.Range("A1"))
.TextFilePlatform = 932
.TextFileParseType = xlDelimited 'xlFixedWidth
.RefreshStyle = xlOverwriteCells
.Refresh
.Delete
End With
End Sub
'Private Sub InTxt_NewSheets()の
Call OpenDB(filePath, Array_file(j), newWs) '有効にする
Call QTRF(filePath, Array_file(j), newWs)削除または無効にすると下記で処理されます。 .ReadText(-1)だと改行が無視され1セルに入ります。-2だと上と同じ結果
'通常、 .ReadText を Splitなどで加工して出力する場合に使う
Private Sub OpenDB(filePath, fileName, newWs)
Dim i As Long
With CreateObject("ADODB.Stream")
.Charset = "Shift_JIS" ' "UTF-8"
.Open
.LoadFromFile filePath & fileName
Do Until .EOS
newWs.Cells(i + 1, 1) = .ReadText(-1) '-1:1行 -2 LF行単位
i = i + 1
Loop
.Close
End With
End Sub
どちらにも該当しない結果をお望みの場合は、改行コード、テキストの内容(デモ)
正しく実行された場合の、サンプルを提示するのが良いと思います。
取り敢えず、ありあわせです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/07/14 12:49
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
複数のテキストファイルをエクセルに一括で取り込みたい
Excel(エクセル)
-
マクロを使ってフォルダー内にあるtxtデータをエクセルにデータに変換する方法をご教授願います
Excel(エクセル)
-
Excel VBAでフォルダ内の全テキストファイルの任意データを取得について
Visual Basic(VBA)
-
-
4
複数のテキストファイルをexcelでそれぞれ別シートに書き出したい
Excel(エクセル)
-
5
同一フォルダにある複数のテキストファイル(メモ帳)を一括でエクセルに取り込みたいです。
Visual Basic(VBA)
-
6
複数のテキストファイルを一括でエクセルに取り込みたい。
Excel(エクセル)
-
7
VBAでテキストファイルを複数開いて順番に処理する方法がわからないです。
Visual Basic(VBA)
-
8
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
11
【VBA】複数のtxtファイルから特定区間の複数行を呼び出し、エクセルにまとめたい。
Visual Basic(VBA)
-
12
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
テキストファイルの一部分を抽出する方法について
Visual Basic(VBA)
-
15
複数あるメモ帳を一括でエクセルに貼り付ける方法を教えてください!!
Excel(エクセル)
-
16
【VBA】フォルダ内の全てのテキストファイルから値をコピペするコードについて
Excel(エクセル)
-
17
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
18
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
19
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
20
エクセルVBAのエディターが上書きモード?に・・・・。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ある文字列を含む行の抽出
-
Excel.VBA テキストファイルを...
-
VB6側からテキストファイルをク...
-
VBAでPowerPointからExcelにデ...
-
fortranでのcsvファイルを出力...
-
VBSを用いてIPアドレスを取得し...
-
バッチでiniファイルの編集
-
VBAで新しい日付順にファイルを...
-
VBAで外部ファイル(HTMLソース...
-
特定フォルダ内のテキストファ...
-
複数行の文字列を変数として使...
-
テキストファイルを直接置換す...
-
BCPユーティリティの使用法_...
-
アンケート結果をcsv出力できる...
-
cobolのコメント削除
-
VB.NETでテキストファイルからH...
-
複数のCSVの指定行だけを残し、...
-
コマンドプロンプトの「%1」と...
-
バッチでテキストファイルから...
-
コマンドプロンプトのエラーに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6側からテキストファイルをク...
-
VBAで新しい日付順にファイルを...
-
VBAでPowerPointからExcelにデ...
-
特定フォルダ内のテキストファ...
-
BCPユーティリティの使用法_...
-
ある文字列を含む行の抽出
-
access vbaでCSVファイルを文...
-
テキストファイルを直接置換す...
-
複数行の文字列を変数として使...
-
テキストファイルの行頭に文字...
-
A列をテキストファイル名に、B...
-
バッチでiniファイルの編集
-
Excel.VBA テキストファイルを...
-
fortranでのcsvファイルを出力...
-
unicode文字列(日本語)のファイ...
-
RandomとBinaryモードの違い
-
ソースコードの差分がある行番...
-
c言語の問題です
-
C#でのファイル編集と上書き保...
-
VBAで任意のフォルダ内のファイ...
おすすめ情報