Guardar como CSV con separador "|"

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Guardar como CSV con separador "|"

Notapor mikachu » 01 Mar 2012 20:48

Saludos y gracias de antemano. Mi problema es que necesito guardar una hoja de un fichero excel 2007 en formato csv o txt, pero los campos deben ir separados por "|", y cuando una celda no tiene valor no debe aparecer un "0", sino un espacio vacío. Además necesito que me guarde el archivo con el mismo nombre que el fichero excel. He encontrado varias macros que hacen algo parecido, pero ninguna con todas estas características. Incluso yo he gravado una y me funcionaba perfecta, pero aun habiendo cambiado la configuración regional me separaba los campos por comas, sin embargo si guardo manualmente el archivo como csv me lo hace perfecto, no entiendo porqué. Si alguien puede echarme una mano se lo agradezco enormemente. Un saludo

Ah, la macro que yo gravé es esta:
Sub Macro2()
'
' Macro2 Macro
'

'
ChDir "D:\Cousas casa\00-CONTROL DE VIAJEROS\PRUEBA FICHERO POLICIA"
ActiveWorkbook.SaveAs Filename:= _
"D:\Cousas casa\00-CONTROL DE VIAJEROS\PRUEBA FICHERO POLICIA\CONTROL DE VIAXEIROS 10.0.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
ChDir "D:\Cousas casa\00-CONTROL DE VIAJEROS"
ActiveWorkbook.SaveAs Filename:= _
"D:\Cousas casa\00-CONTROL DE VIAJEROS\CONTROL DE VIAXEIROS 10.0.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub


Probé también una de un tal McGimpsey, que funciona muy bien, pero me guarda un archivo con nombre Test.txt, y no se como hacer para que me lo guarde con el mismo nombre que tiene el fichero xlms. Si alguien puede solucionar este detalle esta macro me seria perfecta.

Public Sub TextNoModification()
Const DELIMITER As String = "," 'or "|", vbTab, etc.
Dim myRecord As Range
Dim myField As Range
Dim nFileNum As Long
Dim sOut As String

nFileNum = FreeFile
Open "Test.txt" For Output As #nFileNum
For Each myRecord In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With myRecord
For Each myField In Range(.Cells(1), _
Cells(.Row, Columns.Count).End(xlToLeft))
sOut = sOut & DELIMITER & myField.Text
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Next myRecord
Close #nFileNum
End Sub


Lo dicho, gracias por adelantado.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mikachu
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Mar 2011 08:23

Re: Guardar como CSV con separador "|"

Notapor mipega62 » 01 Mar 2012 21:17

hola .esperando que algun master de macros sugiera algo mejor te comento que :
cambia la linea que dice
Open "Test.txt" For Output As #nFileNum

por esta

open left(activeworkbook.name,instr(1,activeworkbook.Name,".",vbTextCompare )) & "txt For Output As #nFileNum

para que se guarde con el mismo nombre del libro y con la extension .txt

espero te sea util.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
mipega62
Miembro Frecuente
Miembro Frecuente
 
Registrado: 14 Abr 2007 06:55
Ubicación: Co.. Roma, Mexico D.F

Re: Guardar como CSV con separador "|"

Notapor Adrian » 02 Mar 2012 11:44

Hola, lo que puedo decir es que si en la configuración Regional y de idioma (Win) el separador de listas es el caracter pipe (|), estableces eso y luego guardas como CSV delimitados por coma por más que diga comas lo guarda delimitado por ese caracter |. Reestableces is lo crees necesario tu separador de listas.
todo esto sin necesidad de macros.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: Guardar como CSV con separador "|"

Notapor mikachu » 02 Mar 2012 12:21

mipega62 escribió:hola .esperando que algun master de macros sugiera algo mejor te comento que :
cambia la linea que dice
Open "Test.txt" For Output As #nFileNum

por esta

open left(activeworkbook.name,instr(1,activeworkbook.Name,".",vbTextCompare )) & "txt For Output As #nFileNum

para que se guarde con el mismo nombre del libro y con la extension .txt

espero te sea util.


Gracias por tu ayuda, creo que puede ser justo lo que necesito, pero me da un error de sintaxis, podrías chequarlo por favor? :?
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mikachu
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Mar 2011 08:23

Re: Guardar como CSV con separador "|"

Notapor mikachu » 02 Mar 2012 12:22

mikachu escribió:Saludos y gracias de antemano. Mi problema es que necesito guardar una hoja de un fichero excel 2007 en formato csv o txt, pero los campos deben ir separados por "|", y cuando una celda no tiene valor no debe aparecer un "0", sino un espacio vacío. Además necesito que me guarde el archivo con el mismo nombre que el fichero excel. He encontrado varias macros que hacen algo parecido, pero ninguna con todas estas características. Incluso yo he gravado una y me funcionaba perfecta, pero aun habiendo cambiado la configuración regional me separaba los campos por comas, sin embargo si guardo manualmente el archivo como csv me lo hace perfecto, no entiendo porqué. Si alguien puede echarme una mano se lo agradezco enormemente. Un saludo

Ah, la macro que yo gravé es esta:
Sub Macro2()
'
' Macro2 Macro
'


Gracias, pero esto ya lo he probado, y haciendolo sin macro me funciona perfecto, pero al hacerlo con la macro me vuelve a poner las comas.

'
ChDir "D:\Cousas casa\00-CONTROL DE VIAJEROS\PRUEBA FICHERO POLICIA"
ActiveWorkbook.SaveAs Filename:= _
"D:\Cousas casa\00-CONTROL DE VIAJEROS\PRUEBA FICHERO POLICIA\CONTROL DE VIAXEIROS 10.0.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
ChDir "D:\Cousas casa\00-CONTROL DE VIAJEROS"
ActiveWorkbook.SaveAs Filename:= _
"D:\Cousas casa\00-CONTROL DE VIAJEROS\CONTROL DE VIAXEIROS 10.0.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub


Probé también una de un tal McGimpsey, que funciona muy bien, pero me guarda un archivo con nombre Test.txt, y no se como hacer para que me lo guarde con el mismo nombre que tiene el fichero xlms. Si alguien puede solucionar este detalle esta macro me seria perfecta.

Public Sub TextNoModification()
Const DELIMITER As String = "," 'or "|", vbTab, etc.
Dim myRecord As Range
Dim myField As Range
Dim nFileNum As Long
Dim sOut As String

nFileNum = FreeFile
Open "Test.txt" For Output As #nFileNum
For Each myRecord In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With myRecord
For Each myField In Range(.Cells(1), _
Cells(.Row, Columns.Count).End(xlToLeft))
sOut = sOut & DELIMITER & myField.Text
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Next myRecord
Close #nFileNum
End Sub


Lo dicho, gracias por adelantado.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mikachu
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Mar 2011 08:23

Re: Guardar como CSV con separador "|"

Notapor mipega62 » 02 Mar 2012 13:42

disculpa la omision, de repente el dedo juega algunas malas pasadas:
agrega comilla donle al fina de "TXT.
dice
open left(activeworkbook.name,instr(1,activeworkbook.Name,".",vbTextCompare )) & "txt For Output As #nFileNum

Debe quedar asi

open left(activeworkbook.name,instr(1,activeworkbook.Name,".",vbTextCompare )) & "txt" For Output As #nFileNum

espero te sea util
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
mipega62
Miembro Frecuente
Miembro Frecuente
 
Registrado: 14 Abr 2007 06:55
Ubicación: Co.. Roma, Mexico D.F

Re: Guardar como CSV con separador "|"

Notapor mikachu » 05 Mar 2012 21:21

SOLUCIONADO¡¡

Muchas gracias a todos por vuestra inestimable ayuda¡¡
Sin embargo ahora que creía que ya tenía todo solucionado tengo otro problemilla, pero como no tiene relación con este post casi mejor abriré otro.

Un saludo
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mikachu
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Mar 2011 08:23


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: vicoga73 y 5 invitados