A continuación, veremos un programa en Excel VBA que 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. Usamos 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

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

myFile = Application.DefaultFilePath & "sales.csv"

Nota: la propiedad DefaultFilePath devuelve la ruta de archivo predeterminada. Para cambiar la ubicación predeterminada del archivo, en la pestaña Archivo, haga clic en Opciones, Guardar.

3. Inicializamos el objeto de rango 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 escribir en el archivo. 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. Inicie 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 declaración If Then Else, Excel VBA solo comienza 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 olvide 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

4/4 Completado! Obtenga más información sobre el objeto de aplicación>
Siguiente capítulo: Controles ActiveX