Especificación de un delimitador al guardar un archivo CSV en una macro (Microsoft Excel)
Al crear un archivo CSV usando los menús para exportar una hoja de trabajo, Arkadiusz señaló que puede especificar que quiere usar un punto y coma (;)
como un delimitador de campo. Sin embargo, si guarda un archivo CSV usando una macro (FileFormat: = xlCSV o xlCSVWindows), entonces no puede especificar un punto y coma como delimitador.
Esto funciona de esta manera por diseño en VBA. La implementación de Excel de las rutinas de exportación para VBA siempre usa la configuración regional de Windows para determinar cómo se deben separar los elementos en un CSV.
Específicamente, la rutina busca el delimitador en el campo Separador de listas. Esto significa que puede, si lo desea, cambiar el delimitador a un punto y coma cambiando la configuración del Separador de listas en su configuración regional.
Si no desea cambiar la configuración regional, puede escribir su propia macro que generará el archivo de la forma que desee.
Considere, por un momento, la siguiente macro, que generará el archivo:
Sub CreateFile() FName = ActiveWorkbook.Name If Right(FName, 4) = ".xls" Then FName = Mid(FName, 1, Len(FName) - 4) End If Columns(1).Insert Shift:=xlToRight For i = 1 To Range("B65000").End(xlUp).Row TempString = "" For j = 2 To Range("HA1").End(xlToLeft).Column If j <> Range("HA1").End(xlToLeft).Column Then TempString = TempString & _ Cells(i, j).Value & ";" Else TempString = TempString & _ Cells(i, j).Value End If Next Cells(i, 1).Value = TempString Next Columns(1).Select Selection.Copy Workbooks.Add Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=FName & ".txt", _ FileFormat:=xlPrinter End Sub
Esta macro tiene un enfoque único para crear el archivo de salida. Lo que hace es insertar una columna a la izquierda de su hoja de trabajo y luego concatena todos los datos a la derecha de esa columna en la columna A recién insertada. Agrega un punto y coma entre cada campo. Una vez hecho esto, toma la información que puso en la columna A y la escribe en un nuevo libro de trabajo. Este libro de trabajo se guarda en el disco utilizando el formato de archivo xlPrinter, lo que significa que se publica «tal cual» sin ninguna modificación.
Si prefiere un enfoque más directo, escribiendo la información directamente en un archivo sin realizar cambios en su hoja de trabajo, eche un vistazo a la macro en esta publicación de blog:
https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/
La macro usa comas entre cada campo, pero se puede modificar fácilmente para usar punto y coma en su lugar.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (3232) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:
link: / excelribbon-Specifying_a_Delimiter_when_Saving_a_CSV_File_in_a_Macro [Especificación de un delimitador al guardar un archivo CSV en una macro]
.