¿Es Posible Exportar Datos a un archivo plano?

Buenas queridos experts.
La pregunta va más menos así, supongamos que tengo una columna que contiene datos que necesito queden en un archivo plano (.dat), ¿es posible crear un macro que me ayude con eso?
Me explico un poco más, la columna G, necesito se exporte a un archivo de un nombre definido con sus datos uno abajo de otro apilados de una manera básica, pregunto como macro porque quiero que el operario intervenga lo menos posible con el proceso. Es decir casi que el presione un botón y se exporte su selección.
Muchas Gracias de antemano.

1 respuesta

Respuesta
1
Sí, se puede generar un fichero ASCII desde Excel. Te paso un trozo de código muy básico:
Sub CrearFicheroPlano()
Dim i As Integer
Dim ColumnaDatos As Integer
Dim strNomFichero As String
Dim strH1 As String
i = 1
ColumnaDatos = 7
strNomFichero = "C:\ejercicio_fiscal_Q1_2007.dat"
strH1 = "Empresa, S.A"
Open strNomFichero For Output As #1
Print #1, strH1
Write #1, 'linea en blanco
While Cells(i, ColumnaDatos).Value <> ""
Print #1, Cells(i, ColumnaDatos).Value
i = i + 1
Wend
Close #1
End Sub
Esta rutina lee todos los datos de la columna 7 ("G"), crear una cabecera y genera un fichero .dat en C:\.
Muchas gracias vorko, pero podrías explicármelo más paso a paso. La verdad nunca habia trabajado con macros antes >. <-
Otra cosilla, es posible Crear un Botón, ¿para qué se ejecute el macro?
Gracias.
Ya logré el botón, y el macro anda de maravilla excepto por 1 detalle, me toma desde la fila 1 y necesito que me tome la columna desde la fila 2 en adelante.
Lo ultimo y perdón por lo preguntón!
Había hecho un "autofiltro" en esta columna de acuerdo a otra columna que contiene fechas, pero al generar el archivo plano con el macro este toma todo lo que hay en la columna sin importar si algunos datos están "filtrados" (lo puse entre comillas, por de seguro solo están escondidos), ¿hay aluna forma de hacer que el macro respete "lo que se vé"?
Gracias
Un update:
- Ya pude hacer el botón.
- Ya pude hacer que me toma desde segunda fila (Que el final se transformo en 8va fila)
- Lo del filtro aun no se como hacerlo.
Este es el macro que me deja perfecto todo:
Sub CrearArchivoPlanoCajas()
Dim i As Integer
Dim ColumnaDatos As Integer
Dim strNomFichero As String
Dim strH1 As String
i = 1
ColumnaDatos = 9
strNomFichero = "C:\maeart.dat"
Open strNomFichero For Output As #1
While Cells(i + 7, ColumnaDatos).Value <> ""
Print #1, Cells(i + 7, ColumnaDatos).Value
Print #1, Cells(i + 7, ColumnaDatos).Value
i = i + 1
Wend
Close #1
End Sub
Pero el problema es que cuando la linea 7 es decir "ColumnaDatos = 9" lo cambio a 10, el macro no hace nada cuando lo ejecuto. No se porque, cualquier numero de 1 a 9 funciona pero 10 no...
1. La sintaxis del comando Cells es:
Cells(Fila, Columna)
La macro debería funcionar para cualquier columna que contenga datos. Confirma que la columna 10 no esté en blanco. Si contiene datos, mira de qué tipo son (numéricos, texto...), quizá sea este el problema aunque no lo creo. Ya me dirás.
2. En cuanto al autofiltro: no se puede hacer de la manera actual. Piensa que las líneas autofiltradas siguen estando ahí aunque no las veas y por tanto la macro sigue recorriéndolas como si estuvieran visibles. Para hacer que el código seleccione las filas que deben pasar al fichero ASCII debes hacer el filtro dentro del bucle.
Por ejemplo, si en la columna de datos tenemos días de la semna y sólo quiero pasar al fichero las líneas que contengan el valor "martes" deberías hacer:
...
FilaDatos = 8
ColumnaDatos = 9 
strNomFichero = "C:\maeart.dat"
Open strNomFichero For Output As #1
While Cells(FilaDatos, ColumnaDatos).Value <> ""
       if Cells(FilaDatos, ColumnaDatos).Value="martes" then
             Print #1, Cells(FilaDatos, ColumnaDatos).Value
             Print #1, Cells(FilaDatos, ColumnaDatos).Value
       end if 
i = i + 1
Wend
Close #1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas