私はあなたのデータが以下のイメージのものであると仮定しています。ここで
、
- 列
A
は
- 列
B
は、検討のために1から3
いくつかのことに及ぶ行番号を持つを作成するファイル名が含まれています:
- 名前が1から10までのフォルダにすでに10個のテキストファイルがあると述べたので、データの各行についてこれらのファイルを選択しています。たとえば、行1は新しいファイルを名前
File_A
で作成し、データは行番号になります。指定されたフォルダにある1.txt
という名前のファイルの1次に、2行目については、新しいファイル名がFile_B
で作成され、データは行番号になります。 2 2.txt
などのファイルの2つ(これは明らかです)
- コードは、10ファイルが既に保存されているのと同じフォルダに新しく作成されたファイルを保存します。
Sub CreateTextFile()
Dim hf As Integer: hf = FreeFile
Dim lines() As String
Dim i As Long, LastRow As Long, FileLine As Long, LineNum As Long, lineCntr As Long
Dim FileName As String, FilePath As String
Dim ws As Worksheet
Dim fso As Object, oFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = ThisWorkbook.Worksheets("Sheet1") '---->change Sheet1 to your worksheet name
FilePath = "C:\test_folder\" '---->change filepath as required
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRow
FileName = FilePath & i & ".txt"
LineNum = ws.Cells(i, 2).Value
'reading text file line by line
Open FileName For Input As #hf
lines = Split(Input$(LOF(hf), #hf), vbNewLine)
Close #hf
'writing particular line to new text file
For lineCntr = 0 To UBound(lines)
If lineCntr + 1 = LineNum Then
Set oFile = fso.CreateTextFile(FilePath & ws.Cells(i, 1) & ".txt")
oFile.WriteLine lines(lineCntr)
oFile.Close
End If
Next lineCntr
Next i
Set fso = Nothing
Set oFile = Nothing
End Sub
何かが明確でない場合は、私に教えてください。
ありがとうございます!@Mrigitこれは素晴らしい作品です! – splertok
@splertok - 喜んでお手伝いします。この解決策があなたに答えた場合は、それを答えとしてマークしてください。 – Mrig