Escribir datos en un archivo de texto usando Excel VBA
A continuación vamos a ver un programa en Excel VBA que escribe un rango de Excel a un archivo de texto CSV (valor separado por comas).
Situación:
Coloque un botón de comando en la hoja de trabajo y añadir las líneas de código siguientes:
-
En primer lugar, declaramos una variable llamada myFile de tipo String, un objeto llamado rng del tipo de intervalo, una variable llamada CellValue de tipo Variant, una variable i llama de tipo entero, y una variable llamada j de tipo entero. Utilizamos una variable Variant aquí porque una variable Variant puede contener cualquier tipo de valor.
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
-
Se debe especificar la ruta completa y el nombre del archivo.
myFile = Application.DefaultFilePath & "\sales.csv"
Nota: la propiedad DefaultFilePath devuelve la ruta de archivo predeterminado. Para cambiar la ubicación predeterminada del archivo, en la ficha Archivo, haga clic en Opciones, Guardar.
-
inicializar el generador de números aleatorios con objeto de rango de la gama seleccionada.
Set rng = Selection
-
Añadir la siguiente línea de código:
Open myFile For Output As #1
Nota: esta declaración permite que el archivo se pueda grabar en. Podemos hacer referencia al archivo como # 1 durante el resto de nuestro código. Si el archivo ya existe, se elimina y se creará un nuevo archivo con el mismo nombre.
-
Iniciar un bucle doble.
For i = 1 To rng.Rows.Count For j = 1 To rng.Columns.Count
Nota: rng.Rows.Count devuelve el número de filas (17 en este ejemplo) y rng.Columns.Count devuelve el número de columnas (4 en este ejemplo).
-
Excel VBA escribe el valor de una celda a la variable CellValue.
cellValue = rng.Cells(i, j).Value
-
Añadir las siguientes líneas de código para escribir el valor de CellValue al archivo de texto.
If j = rng.Columns.Count Then Write #1, cellValue Else Write #1, cellValue, End If
Explicación: debido a la instrucción Else Si Entonces, Excel VBA sólo se inicia una nueva línea (Comentario # 1, CellValue) cuando j es igual al número de columnas (último valor en una fila). Para separar los valores con una coma, el uso de escritura # 1, CellValue, (con una coma).
-
No se olvide de cerrar ambos bucles.
Next j Next i
-
Cierre el archivo.
Close #1
-
Seleccione los datos y haga clic en el botón de comando en la hoja.
Resultado: