我需要帮助创建一个脚本,该脚本使用来自其他文本文件的内容创建新文本文件,并考虑列中的值。 我在列A中填充了10个名称,列B填充了1到3之间的数字,以及包含10个文本文件的文件夹,这些文件具有数字作为名称(从1到10)。 我需要为A列中的每个名称创建一个文本文件,该文件文件将B列中的值与文本文件中的文本一起考虑。 文本文件内容包含3个不同的行:
1content1
2content2
3content3
对于第一个名称,如果b列中相同行的值为1,则新创建的文本文件只需要包含第一个文本文件的第一行(1):“1content1”,依此类推。
这可能吗?我该怎么做呢谢谢!
答案 0 :(得分:0)
我假设您的数据如下图所示。
下面,
A
包含要创建的文件名B
的行号范围为1到3 很少有事情需要考虑:
File_A
创建一个新文件,其中数据为行号。指定文件夹中名为1.txt
的文件中的1个。然后对于第2行,将创建名为File_B
的新文件,其中数据将为行号。名称为2.txt
的文件中的2个,依此类推。(我想这很清楚)
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
如果有什么不清楚,请告诉我。