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:

Write Data to Text File in Excel VBA

Coloque un botón de comando en la hoja de trabajo y añadir las líneas de código siguientes:

  1. 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
  1. 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.

  1. inicializar el generador de números aleatorios con objeto de rango de la gama seleccionada.

Set rng = Selection
  1. 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.

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

  1. Excel VBA escribe el valor de una celda a la variable CellValue.

cellValue = rng.Cells(i, j).Value
  1. 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).

  1. No se olvide de cerrar ambos bucles.

Next j

Next i
  1. Cierre el archivo.

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

Resultado:

Write Data to Text File Result