Mark notó algo extraño cuando se trata de crear archivos CSV con Excel: los archivos no siempre son consistentes en cómo terminan cada fila en los datos de salida. Cuando crea un archivo CSV que tiene, quizás, 70 campos (columnas) de datos y luego ve el archivo CSV en un editor de texto, notó que todos los registros contienen retornos de carro, pero en diferentes lugares. Algunos registros tienen una cadena de comas que representan campos vacíos, luego terminan en el lugar «correcto»; otros terminan justo después de la última columna poblada; algunos tienen algunas comas, pero no lo suficiente para todos los campos vacíos. Mark se preguntó por qué ocurre esto y cómo puede conseguir que los archivos CSV contengan un número constante de campos de salida.

Una forma relativamente fácil de solucionar el problema es incluir un campo «ficticio» completo en sus datos, antes de guardarlos como CSV. Por ejemplo, si su tabla tiene 70 columnas, en la celda A71 ingrese un punto. Copie el contenido de esta celda hacia abajo, para tantas filas como tenga en la tabla. Cuando luego exporte la hoja de trabajo a CSV, Excel incluirá el campo ficticio, pero lo que es más importante, incluirá la cantidad adecuada de delimitadores de campo (comas) antes de ese campo final en cada registro.

Si no desea el campo ficticio, puede intentar esto:

  1. Seleccione una de las celdas en su fila de encabezado.

  2. Presione Mayús + Ctrl + 8. Se selecciona toda la tabla de datos.

  3. Presione Ctrl + H para mostrar la pestaña Reemplazar del cuadro de diálogo Buscar y reemplazar. (Ver figura 1)

  4. Asegúrese de que el cuadro Buscar qué esté completamente vacío.

  5. En el cuadro Reemplazar con ingrese un solo espacio.

  6. Haga clic en Reemplazar todo. Excel debería informarle cuántos reemplazos se realizaron.

Estos pasos reemplazan todas las celdas vacías con celdas que contienen un solo espacio. A continuación, puede realizar la exportación a CSV y se exportará la cantidad adecuada de campos para cada fila.

Por último, si exporta habitualmente tablas grandes a formato CSV, es posible que desee crear una macro que realice la creación del archivo por usted. El siguiente es solo un ejemplo del tipo de macro que puede usar:

Sub CreateCSV()

Dim wkb As Workbook     Dim wks As Worksheet     Dim wksOri As Worksheet     Dim iCols As Integer     Dim lRow As Long     Dim iCol As Integer     Dim lRows As Long     Dim sFilename As String

Application.ScreenUpdating = False     sFilename = "C:\test.csv"

Set wksOri = ActiveSheet     iCols = wksOri.Cells. _         SpecialCells(xlCellTypeLastCell).Column     lRows = wksOri.Cells. _         SpecialCells(xlCellTypeLastCell).Row

Set wkb = Workbooks.Add     Set wks = wkb.Worksheets(1)



For lRow = 1 To lRows         For iCol = 1 To iCols             With wks.Cells(lRow, 1)

If iCol = 1 Then                     .Value = wksOri.Cells(lRow, iCol).Text                 Else                     .Value = .Value & "," & _                         wksOri.Cells(lRow, iCol).Text                 End If             End With         Next     Next

Application.DisplayAlerts = False     wkb.SaveAs FileName:=sFilename, _         FileFormat:=xlCSV     wkb.Close     Application.DisplayAlerts = True     wksOri.Parent.Activate     Application.ScreenUpdating = True     MsgBox sFilename & " saved"



Set wks = Nothing     Set wkb = Nothing     Set wksOri = Nothing End Sub

La macro crea un libro de trabajo completamente nuevo y luego «compila» en la columna A de la primera hoja de trabajo del libro de trabajo la información de la hoja de trabajo original. Estos datos, que contendrán un delimitador para cada campo en el original, se guardan como un archivo CSV. Finalmente, se elimina el libro temporal.

La ruta y el nombre de archivo del CSV están codificados en el código (la variable sFileName), aunque podría modificarse para que el código solicite un nombre de archivo si lo desea.

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (3068) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.