Visual Basic - Eliminar saltos de linea antes de convertir a csv

Life is soft - evento anual de software empresarial
   
Vista:

Eliminar saltos de linea antes de convertir a csv

Publicado por cyttorak (2 intervenciones) el 09/02/2015 18:36:46
Hola

He hecho este scrip en vb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if WScript.Arguments.Count < 1 Then
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
For Each objws In oBook.Sheets
objws.Copy
	For Each c In objws.UsedRange
	If 0 < InStr(c.Value, Chr(10)) Then
	c.Value = Replace(c.Value, Chr(10), "")
	End If
	If 0 < InStr(c.Value, ",") Then
	c.Value = Replace(c.Value, ",", " ")
	End If
	c.Value=Trim(oExcel.Clean(c.Value))
	Next
oExcel.ActiveWorkbook.SaveAs oBook.Path & "\" & oBook.Name & "-" & objws.Name & ".csv", 6
oExcel.ActiveWorkbook.Close False
Next
oBook.Close False
oExcel.Quit

El objetivo es ejecutarlo asi:
script.vb c:\mi.xls

y obtener un csv por cada hoja del xsl.

Hasta ahí ningún problema, esa parte funciona, lo que no consigo es que antes de guardarlo elimine de cada celda los saltos de linea y comas que pudiea haber.
Si pongo un MsgBox(c.Value) veo que los Replace se están haciendo, así que no se que es lo que falla a la hora de guardar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Megamind

Eliminar saltos de linea antes de convertir a csv

Publicado por Megamind (121 intervenciones) el 09/02/2015 20:42:09
Prueba con
c.Value = Replace(c.Value, vbcrlf, "")

Avance de línea Chr(10)
Retorno de carro Chr(13)
Las dos: vbcrlf
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar saltos de linea antes de convertir a csv

Publicado por cyttorak (2 intervenciones) el 09/02/2015 20:45:35
Gracias, lo hare así para que sea más eficiente.
Pero no creo que ese sea el problema pues como ya digo si hago un MsgBox(c.Value) antes y después de hacer los replace se ve que el texto ha cambiado.
De hecho probé a poner c.Value='aaaa' y digo igual, no se guarda con el valor cambiado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar