/ / Escribir datos en un archivo de texto usando Excel VBA

Escribir datos en un archivo de texto usando Excel VBA

A continuación veremos un programa en Excel VBA ese escribe un rango de Excel en un archivo de texto CSV (valores separados por comas).

Situación:

Escribir datos en un archivo de texto en Excel VBA

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

1. Primero, declaramos una variable llamada myFile de tipo String, un objeto llamado rng de tipo Range, una variable llamada cellValue de tipo Variant, una variable llamada i de tipo Integer y una variable llamada j de tipo Integer. Aquí utilizamos una variable Variant 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

2. Necesitamos especificar la ruta completa y el nombre del archivo.

myFile = Application.DefaultFilePath & "sales.csv"

Nota: la propiedad DefaultFilePath devuelve la ruta predeterminada del archivo. La ruta a la carpeta que ve cuando abre o guarda un archivo.

3. Iniciamos el rango del objeto rng con el rango seleccionado.

Set rng = Selection

4. Agregue la siguiente línea de código:

Open myFile For Output As #1

Nota: esta declaración permite que el archivo sea escrito en. Podemos referirnos al archivo como # 1 durante el resto de nuestro código. Si el archivo ya existe, se eliminará y se creará un nuevo archivo con el mismo nombre.

5. 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).

6. Excel VBA escribe el valor de una celda en la variable cellValue.

cellValue = rng.Cells(i, j).Value

7. Agregue las siguientes líneas de código para escribir el valor de cellValue en el 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 If Then Else, Excel VBA solo inicia una nueva línea (Write # 1, cellValue) cuando j es igual al número de columnas (último valor en una fila). Para separar los valores con una coma, use Write # 1, cellValue, (con una coma).

8. No te olvides de cerrar ambos bucles.

    Next j
Next i

9. Cierre el archivo.

Close #1

10. Seleccione los datos y haga clic en el botón de comando en la hoja.

Resultado:

Escribir datos en el resultado del archivo de texto

Lea también: