Мені потрібна допомога в створенні сценарію, який створює новийтекстові файли із вмістом інших текстових файлів з урахуванням значень стовпця. У мене стовпець A заповнений 10 іменами, стовпець B заповнений цифрами, що варіюються від 1 до 3, і папка з 10 текстовими файлами, що мають цифри як імена (від 1 до 10). Мені потрібно створити текстовий файл для кожного імені в стовпці "А", який враховує значення в стовпці "В" з текстом з текстових файлів. Вміст текстових файлів містить 3 різних рядки:
1зміст1
2зміст2
3зміст3
Для першого імені, якщо значення у стовпці b того ж рядка дорівнює 1, новоствореному текстовому файлу потрібно було б містити лише перший рядок першого текстового файлу (1): "1content1" тощо.
Чи можливо це? Як би я пішов про це. Дякую!
Відповіді:
0 для відповіді № 1Я припускаю, що ваші дані такі, як на зображенні нижче.
Тут
- Колонка
A
містить ім'я файлу, який потрібно створити - Колонка
B
має рядок від 1 до 3
Кілька речей для розгляду:
- Як ви вже говорили, ви вже маєте 10 текстових файлів у папці з іменами від 1 до 10, я вибираю ці файли для кожного рядка в даних. Наприклад, рядок 1 створить новий файл за назвою
File_A
де дані будуть рядком № 1 файл з ім'ям1.txt
у вказаній папці. Потім для рядка 2 новий файл по іменіFile_B
буде створено там, де дані будуть рядком №. 2 файл з ім'ям2.txt
і т. д. (я думаю, це зрозуміло) - Код збереже новостворений файл у тій самій папці, де вже збережено 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
Дайте мені знати, якщо щось не зрозуміло.