/ / Cree archivos de texto para cada fila en una hoja de cálculo de Excel con datos de diferentes archivos de texto: excel, excel-vba, vba

Cree archivos de texto para cada fila en una hoja de cálculo de Excel con datos de diferentes archivos de texto: excel, excel-vba, vba

Necesito ayuda para crear un script que crea nuevosArchivos de texto con contenido de otros archivos de texto considerando valores de una columna. Tengo la columna A con 10 nombres, la columna B con números que van del 1 al 3 y una carpeta con 10 archivos de texto que tienen números como nombres (del 1 al 10). Necesito crear un archivo de texto para cada nombre en la columna A que considere el valor en la columna B con el texto de los archivos de texto. El contenido de los archivos de texto contiene 3 líneas diferentes:

1contenido1

2contenido2

3contenido3

Para el primer nombre, si el valor en la columna b misma fila es 1, el archivo de texto recién creado deberá contener solo la primera fila del primer archivo de texto (1): "1content1" y así sucesivamente.

es posible? ¿Cómo lo haría? ¡Gracias!

Respuestas

0 para la respuesta № 1

Estoy asumiendo que sus datos son como en la imagen de abajo.

enter image description here

Aquí,

  1. Columna A contiene el nombre del archivo que se creará
  2. Columna B tiene el número de línea que va de 1 a 3

Pocas cosas a considerar:

  • Como mencionaste, mencionaste que ya tienes 10 archivos de texto en una carpeta con nombres del 1 al 10, estoy seleccionando esos archivos para cada fila en los datos. Por ejemplo, la fila 1 creará un nuevo archivo por nombre File_A donde los datos serán la línea no. 1 de archivo con nombre 1.txten su carpeta especificada. Luego para la fila 2 nuevo archivo por nombre File_B Se creará donde los datos serán la línea no. 2 de archivo con nombre 2.txt y así sucesivamente. (Supongo que esto es claro)
  • El código guardará el archivo recién creado en la misma carpeta donde ya se guardaron 10 archivos.


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

Déjame saber si algo no está claro.