Como eliminar comillas dobles en TXT exportado de Excel con VBA

Necesito guardar un excel con formato txt pero al hacerlo el resultado duplica las comillas he buscado y no encuentro la solución.

Mi código es:

ActiveWorkbook.SaveAs Filename:=ruta & libro & "\" & libro & "_" & tipo & "_" & dia & "_" & tim & ".txt", _
FileFormat:=xlUnicodeText, CreateBackup:=False
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.ScreenUpdating = True

Y el resultado es el siguiente:

"""[email protected]"", ""Juan Perez"", ""jperez"", ""Tiene una clave ya asignada"", ""Diplomado""",

Pero debería quedar así:

"[email protected]", "Juan Perez", "jperez", "Tiene una clave ya asignada", "Diplomado"

No se si es parte del formato o me falta alguna configuración.

1 Respuesta

Respuesta
1

Puedes poner tu macro completa, no veo qué tienes en cada variable:

ruta & libro & "\" & libro & "_" & tipo & "_" & dia & "_" & tim

Esta es la macro completa, lo que hace en pocas palabras  genera una nueva hoja donde concatena los datos de una tabla para generar el txt que se utilizara en otro programa.

Sub archivo ()

Worksheets.Add
ruta = "\\146.155.2.7\Ejecuciones\Ejecuciones\2016\"
libro = Sheets("Alumnos").Range("B1").Value
tipo = Sheets("Alumnos").Range("l4").Value
dia = Format(Date, "dd-mm-yyyy ")
tim = Format(Time(), " hh-mm")
comillas = Chr(34)


For t = 4 To 2500
For K = 4 To 2500
s = t - 3
nombre = Sheets("Alumnos").Range("D" & t).Value
appat = Sheets("Alumnos").Range("B" & t).Value
apmat = Sheets("Alumnos").Range("C" & t).Value
usuario = Sheets("Alumnos").Range("G" & t).Value
Clave = Sheets("Alumnos").Range("H" & t).Value
correo = Sheets("Alumnos").Range("k" & t).Value
curso = Sheets("Alumnos").Range("I" & t).Value


Set Dato = Sheets("Alumnos").Range("B" & t)
Set Dato1 = Sheets("Hoja1").Range("A" & s)
Set dato2 = Sheets("Alumnos").Range("H" & K)
n = correo & Chr(34) & ", " & Chr(34) & nombre & " " & appat & " " & apmat & ", " & usuario & ", " & Clave & ", " & curso

If dato2.Value = "XXXX" Then
dato2.Value = "Tiene una clave UC ya asignada"
Else
End If
Next K

If Dato.Value = "" Then
t = 2500
Else
Dato1.Value = n


End If
Next t

Columns("A:A").Select
Selection.NumberFormat = "@"
hojita = ActiveSheet.Name
Application.ScreenUpdating = False
Sheets(hojita).Select
Sheets(hojita).Copy
ActiveWorkbook.SaveAs Filename:=ruta & libro & "\" & libro & "_" & tipo & "_" & dia & "_" & tim & ".txt", FileFormat:=xlUnicodeText, CreateBackup:=False
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub

H o l a:

No entiendo el funcionamiento de la macro, hice una prueba, y según tu comentario, sirve para pasar datos de la hoja "alumnos" a la hoja nueva. Pero en la macro no veo en dónde pasa los datos de una hoja a otra.

En cuanto al nombre, lo que veo es que en esta línea se están agregando comillas. Cuando pones Chr(34), estás agregando unas comillas, entonces vba te agrega otras comillas al principio.

n = correo & Chr(34) & ", " & Chr(34) & nombre & " " & appat & " " & apmat & ", " & usuario & ", " & Clave & ", " & curso

Prueba así:

n = correo &  ", "  & nombre & " " & appat & " " & apmat & ", " & usuario & ", " & Clave & ", " & curso


Si necesitas que revise la macro, envíame tu archivo con la macro y con los datos, me explicas qué tienes y cuál es el resultado que esperas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Gina Buzzetti Horta” y el título de esta pregunta.

hola ya envíe el correo, si borro el primer chr(34) efectivamente me aparece las primeras comillas pero sigue duplicando las otras  necesito que quede de la siguiente forma:

"[email protected]", "Juan Perez", "jperez", "Tiene una clave ya asignada", "Diplomado"

Tienes que borrar los 2 chr(34)

si pero al quitarlo aparecen las palabras sin las comillas que es lo que necesito

queda así:

"[email protected], Juan Perez, jperez, Tiene una clave ya asignada, Diplomado"

y lo que necesito es esto:

"[email protected]", "Juan Perez", "jperez", "Tiene una clave ya asignada", "Diplomado"

Ya ví el archivo txt, estoy haciendo unas pruebas. Cuando lo tenga listo te lo envío.

Sal u dos

Te anexo la macro actualizada

Sub archivo()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("Alumnos")
    Set h2 = Sheets("Hoja1")
    h2.Cells.Clear
    ruta = "\\146.155.2.7\Ejecuciones\Ejecuciones\2016\"
    ruta = "C:\trabajo\"
    libro = h1.Range("B1").Value
    tipo = h1.Range("L4").Value
    dia = Format(Date, "dd-mm-yyyy ")
    tim = Format(Time(), " hh-mm")
    '
    f = 1
    For i = 4 To h1.Range("B" & Rows.Count).End(xlUp).Row
        nombr = h1.Range("D" & i).Value
        appat = h1.Range("B" & i).Value
        apmat = h1.Range("C" & i).Value
        usuar = h1.Range("G" & i).Value
        clave = h1.Range("H" & i).Value
        corre = h1.Range("k" & i).Value
        curso = h1.Range("I" & i).Value
        If h1.Range("H" & i) = "XXXX" Then
            h1.Range("H" & i) = "Tiene una clave UC ya asignada"
        End If
        n = """" & corre & """, """ & nombr & " " & appat & " " & apmat & """, """ & _
            usuar & """, """ & clave & """, """ & curso & """"
        h2.Cells(f, "A") = n
        f = f + 1
    Next
    h2.Columns("A:A").NumberFormat = "@"
    h2.Copy
    ActiveWorkbook.SaveAs Filename:=ruta & libro & "\" & libro & "_" & tipo & "_" & dia & "_" & tim & ".txt", _
        FileFormat:=xlTextPrinter, CreateBackup:=False
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
    MsgBox "Archivo generado"
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas