2018-03-04

Cómo exportar en Excel un fichero csv con dobles comillas como calificador de texto


Problema

Queremos exportar un fichero de Excel como un fichero csv (delimitado por comas), y usar las dobles comillas como calificador de texto: "Texto1", "Texto2", "Texto3".

Solución

Excel no nos permite resolver el problema a través de los menús. Tenemos que recurrir a VBA con una subrutina encontrada en la página de soporte de Microsoft.

  1. Abrimos el Editor de Microsoft Visual Basic: Alt+F11.
  2. Creamos la siguiente subrutina en un módulo.
  3. Sub QuoteCommaExport()
       ' Definición de variables.
       Dim DestFile As String
       Dim FileNum As Integer
       Dim ColumnCount As Integer
       Dim RowCount As Integer
    
       ' Cuadro de diálogo para obtener la ruta de destino.
       DestFile = InputBox("Introduce la ruta completa del fichero" _
          & Chr(10) & "(Ej: C:\Usuarios\nubededatos\fichero.csv):", "Exportador con comillas")
    
       ' Obtiene el siguiente número de archivo disponible.
       FileNum = FreeFile()
    
       ' Desactiva la comprobación de errores.
       On Error Resume Next
    
       ' Intenta abrir la ruta de destino seleccionada.
       Open DestFile For Output As #FileNum
    
       ' Si se produce un error, muestra este mensaje.
       If Err <> 0 Then
          MsgBox "No se puede abrir el fichero " & DestFile
          End
       End If
    
       ' Activamos comprobación de errores.
       On Error GoTo 0
    
       ' Bucle en cada filade la selección.
       For RowCount = 1 To Selection.Rows.Count
    
          ' Bucle en cada columna de la selección.
          For ColumnCount = 1 To Selection.Columns.Count
    
             ' Escribe el texto entrecomillado de la celda actual en el fichero.
             Print #FileNum, """" & Selection.Cells(RowCount, _
                ColumnCount).Text & """";
    
             ' Comprueba si es la última columna.
             If ColumnCount = Selection.Columns.Count Then
                ' Si es así, escribe una línea en blanco.
                Print #FileNum,
             Else
                ' De lo contrario, escribe una coma.
                Print #FileNum, ",";
             End If
          ' Comienza la siguiente iteración del bucle de ColumnCount.
          Next ColumnCount
       ' Comienza la siguiente iteración del bucle de RowCount.
       Next RowCount
    
       ' Cierra el fichero de destino.
       Close #FileNum
    End Sub
    
  4. Seleccionamos el rango que deseamos exportar.
  5. Ejecutamos la subrutina.
  6. En el cuadro de diálogo indicamos la ruta completa donde exportar el fichero.
  7. El nuevo fichero se habrá exportado en la ruta indicada en el cuadro de diálogo.Comprobamos que tiene el calificador de texto con las comillas dobles abriendo el fichero con un editor de texto.

Entradas relacionadas

Referencias

No hay comentarios:

Publicar un comentario

Nube de datos