Saltar al contenido

Separador de valores al grabar csv desde una macro


jerosarria

Recommended Posts

publicado

Hola!

Estoy haciendo una macro que copia ciertas columnas del Excel maestro (uso Excel 2003), los pega en un Excel nuevo y le aplica ciertas modificaciones:

- En una columna que tiene valores numéricos con dos decimales le cambia las "," por "." (para que posteriormente el programa en el que necesitamos el nuevo fichero lo pueda interpretar correctamente)

- En otra columna le cambio el formato de celdas a "Número con 0 decimales"

Posteriormente guardamos ese nuevo fichero con formato csv. Se guarda correctamente en la carpeta que indico y con el nombre que indico.

 

Mi problema es el siguiente: Este fichero csv que se genera tiene los valores separados por "," y yo necesito que estén separados por ";"

 

He probado varias cosas:

- Si abro Excel 2003 (un libro nuevo), tecleo ciertos valores y lo guardo como csv, el fichero que me genera tiene los valores separados por ";" tal y como quiero...

- He ido a Panel de control de Windows - Idioma y Región - Configuración Regional - Configuración adicional - Separador de listas - Poner ";" que de hecho es el valor que tenía desde el principio. Incluso he probado a cambiarlo ahí por otro valor cualquiera "#" y efectivamente cuando creo un fichero nuevo csv me lo separa con "#". 

 

Pero en cambio, si la macro me genera el fichero csv de forma automática, me separa los valores con ","

Sabéis si puedo "forzar" en algún punto de la macro a que la separación de valores sea con ";" ? O algún sitio de la configuración de Excel o de Windows dónde deba indicarlo?

 

Muchas gracias por adelantado!

publicado

lo que te sucede con la macro... "depende de..." las instrucciones que usas en la macro (por si puedes comentar que macro usas -exactamente- ?)

saludos,
hector.

publicado

Hola, te copio aquí el código que estoy usando:

 

Sub fichero_csv_para_web()
'
' Macro1 Macro
' Macro grabada el 12/04/2015 por ---
'
' Acceso directo: Ctrl+Mayús+W
'
    Range("P16").Select
    Selection.AutoFilter Field:=15
    Columns("A:Z").Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("A:A").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("B:E").Select
    Selection.Delete Shift:=xlToLeft
    Columns("C:D").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:F").Select
    Selection.Delete Shift:=xlToLeft
    Columns("H:H").Select
    Selection.Delete Shift:=xlToLeft
    Columns("K:K").Select
    Selection.Delete Shift:=xlToLeft
    Columns("O:O").Select
    Selection.Delete Shift:=xlToLeft
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A1").Select
    
' A continuación vamos a seleccionar las columnas E (PVD) y O (Porcentaje de Descuento) y cambiar las , por . (para adaptarlo al formato de decimales requerido por Prestashop)
    Range("E:E,O:O").Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Application.CutCopyMode = False
    
    
' Ahora vamos a seleccionar la columna C y cambiarle el formato a "Número con 0 decimales"
    Range("C:C").Select
    Selection.NumberFormat = "0"
    
    
' Para terminar, vamos a guardar el fichero en la carpeta "Prestashop - Catálogo"
    Range("A2").Select
    ChDir _
        "C:\Users\Admin\Prestashop - Catálogo"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Admin\Prestashop - Catálogo\accesorios.csv" _
        , FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Save
    ActiveWindow.Close
    
    
End Sub
 

 

Gracias!

publicado

vba es US-Centric (csv significa "comma separated values") por lo que si en tu configuracion el delimitador es diferente de una coma solo cambia esta linea:

Hace 12 horas, jerosarria dijo:

    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Admin\Prestashop - Catálogo\accesorios.csv" _
        , FileFormat:=xlCSV, CreateBackup:=False

por esta otra (argumento Local agregado):

    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Admin\Prestashop - Catálogo\accesorios.csv" _
        , FileFormat:=xlCSV, Local:=True, CreateBackup:=False

saludos,
hector.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.