/ / Створення текстових файлів для кожного рядка в таблиці Excel з даними з різних текстових файлів - excel, excel-vba, vba

Створюйте текстові файли для кожного рядка в електронній таблиці Excel з даними з різних текстових файлів - excel, excel-vba, vba

Мені потрібна допомога в створенні сценарію, який створює новийтекстові файли із вмістом інших текстових файлів з урахуванням значень стовпця. У мене стовпець A заповнений 10 іменами, стовпець B заповнений цифрами, що варіюються від 1 до 3, і папка з 10 текстовими файлами, що мають цифри як імена (від 1 до 10). Мені потрібно створити текстовий файл для кожного імені в стовпці "А", який враховує значення в стовпці "В" з текстом з текстових файлів. Вміст текстових файлів містить 3 різних рядки:

1зміст1

2зміст2

3зміст3

Для першого імені, якщо значення у стовпці b того ж рядка дорівнює 1, новоствореному текстовому файлу потрібно було б містити лише перший рядок першого текстового файлу (1): "1content1" тощо.

Чи можливо це? Як би я пішов про це. Дякую!

Відповіді:

0 для відповіді № 1

Я припускаю, що ваші дані такі, як на зображенні нижче.

введіть опис зображення тут

Тут

  1. Колонка A містить ім'я файлу, який потрібно створити
  2. Колонка 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

Дайте мені знати, якщо щось не зрозуміло.