Múltiples Archivos planos a plantilla excel

Necesitaría una macro para poder realizar una tarea diaria donde pego los valores de un archivo plano *. Csv ( no delimitado por comas ) en una plantilla y posteriormente me grabe un excel con el nombre del archivo plano creado en la plantilla.

Son multiples archivos planos y solamente una plantilla.

Actualmente abro cada archivo y pego valores en la plantilla, despues guardo como excel y una vez guardado, imprimo como pdf y vuelvo a generar un PDF con la impresora PDFcreator y lo vuelvo a guardar.

Es una tarea super ardua que me gustaría automatizar ya que son muchos archivos planos al día.

No consigo saber por donde empezar.

Se debería crear un excel con el nombre que tenía el fichero csv.

1 respuesta

Respuesta
1

Fijate en www.programarexcel.blogspot.com hay algo parecido a lo que intentas hacer hay lo que hace es crear un archivo txt y lo guarda, en ese caso se hizo para pasar a un aplicativo en especial pero lo puedes adaptar, también encontraras otras macros que crean archivos y lo guardan; igualmente te lo paso aca a ver si te sirve

Sub ImportaPercepcionesGananciasSiap()
Application.ScreenUpdating = False
'Multiplica por uno para convertir texto en número de existir, para luego si es entero agregar
'dos dígitos después del último número.
Range("W1").Select
Selection.Copy
Range("F2:F2000").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
'el siguiente procedimiento es para copiar y armar el archivo txt con los valores cargados
Range("b2").Select
While ActiveCell.Value <> ""
'se pasa a la fila siguiente
ActiveCell.Offset(1, 0).Select
'se repite el ciclo
Wend
'pone el numero de la fila libre en la variable filalibre
filalibre = ActiveCell.Row - 1
'arma un rango con el valor de la fila libre
mirango = "v2" & ":v" & filalibre
Range(mirango).Select
Selection.Copy
'agrega un nuevo libro y elimina todas las hojas
Workbooks.Add
Range("a1").Activate
Selection.PasteSpecial Paste:=xlValues
'inhabilita el modo Copiar/Pegar
Application.CutCopyMode = False
Application.DisplayAlerts = False
While ActiveWorkbook.Sheets.Count <> 1
ActiveSheet.Next.Delete
Wend
'ActiveWorkbook.SaveAs Filename:="C:\Importa percepciones IVA a SIAP1", FileFormat:=xlTextMSDOS, CreateBackup:=False
'ActiveWorkbook.SaveAs Filename:="C:\Importa percepciones Ganancias_PF a SIAP.txt", FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.SaveAs Filename:="C:\Users\Mi Cuenta\Documents\Importa percepciones Ganancias_PF a SIAP.csv", FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox ("Se creo con éxito el archivo en C:\Users\Mi Cuenta\Documents\Importa percepciones Ganancias_PF a SIAP.txt; debiendo importarlo desde el aplicativo correspondiente como retenciones"), vbInformation
Range("a1").Select
End Sub

Gracias amigo, pero no consigo modificar la macro para que me realice la operación que necesito.

Necesitaría que tomara por defecto todos los archivos csv de una carpeta a escoger pegase los datos en un archivo xlt y lo guardase con el nombre que tenia el csv.

no veo la forma de adaptar la macro.

Gracias igualmente.

Después de mucho pensarlo creo encontrar una forma mas sencilla.

Lo ideal seria un form donde pudiese examinar los csv ( realmente son TXT pero con esta extensión ), también pudiese seleccionar la plantilla .xlt diseñada para estos archivos, un último campo donde indicaría la columna donde se encuentra el nombre que le quiero dar a la hoja creada con los csv. ( en la columna C por ejemplo solo va a encontrar un texto , no siempre en la misma fila, pues ese texto debería ser el nombre de la pestaña.

La macro debería crear un libro y copiar la plantilla en una nueva hoja por cada csv, posteriormente copiar el contenido de cada csv y pegarlo en cada hoja donde tenemos la plantilla. Como ultimo punto debería mirar la columna donde hemos dicho que encontrara el nombre y asignarlo a cada hoja.

De esta forma ya tendría el libro preparado para usar otra macro que tengo, que convierte cada hoja a pdf con el nombre que le damos + el de la hoja y lo preparar para enviar por correo.

Seria posible alguna pequeña introducción de como hacerlo?

Vamos por parte ahí tiene un ejemplo que abre un libro, copia datos y lo guarda, esos es lo que necesitas en parte http://programarexcel.blogspot.com.ar/2013/03/este-procedimiento-copia-los-datos-de.html, analízalo y dime que es lo que te falta.

Añade tu respuesta

Haz clic para o