** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problema al importar Texto de Excel a Access
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoProblema al importar Texto de Excel a Access

 Responder Responder
Autor
Mensaje
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Tema: Problema al importar Texto de Excel a Access
    Enviado: 14/Mayo/2025 a las 15:52
Hola Crack's,
Creo que hay mas gente que le pasa pero no he encontrado respuesta.
Necesito importar una hoja excel a una tabla access, y no consigo que los campos que contienen saltos de linea, se mantengan en el access.

He estado leyendo por ahí, y he verificado que el campo se texto largo, Y tampoco

La unica forma que me lo respeta es, seleccionando el contenido del excel, copiar y pegar directamente al campo de la tabla.

Cosa que no puedo hacer por son varios campos, con muchos registros.

También he probado de importar-lo mediante un plantilla de importación, y tampoco

Alguna cosa no haré bien, porque me parece muy básico cómo para que microsoft no lo tenga contemplado.

Desde ya muchas gracias por vuestros comentarios.

Saludos,

Jordi C.



Editado por jcalvach - 14/Mayo/2025 a las 15:55
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 14/Mayo/2025 a las 18:06
¿Cómo haces la importación?
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 09:59
Buenos dias Miura,
Primero de todo agradecerte tu tiempo.

Te comento, he probado de dos formas.
Mediante importación datos externos creando los campos txt, del tipo "texto largo"
y Mediante copiar y pegar directamente de Excel, que funciona bien, excepto los campos con alt+intro

como info. adicional, probé de concatenar a una celda con textos y chr(13)+ch(10) y al copiarlos a Access me lo respeta. 
Pero toda la info, que el usuario ha picado en celdas con alt+intro, al pasarlo a Access se carga los saltos de línea.

Algo haré mal, por que me parece muy básico para que no funcione. ¿Qué opinas?

Saludos,

Jordi C.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 10:15
Yo probaría a importar el Excel completo en una tabla nueva (DoCmd.TransferSpreadsheet acImport .....   si lo haces con código) y después cambiaría los campos ALT+INTRO por un VbCrLf con una consulta.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 10:17
Pero el problema es que no sé como detectar los alt+intro, una vez estan en la tabla
aparece el texto pegado
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 10:40
Por lo que he mirado el ALT+INTRO es un Chr$(10) + CHR$(13), habría que darle la vuelta ...

yo usaría Replace(Campo, Chr$(10) & Chr$(13), Chr$(13) & Chr$(10))

... o algo así LOL

Ed. Y de todas formas, en la tabla de Access se 've' bien  ... en dos líneas.


Editado por Mihura - 15/Mayo/2025 a las 10:41
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 10:43
Disculpa no me he explicado bien 
Lo que en exel es
Linea1
Linea2
Linea3
M2 1

En access queda así
Linea1Linea2Linea3 M2 1

Y una vez en access, ya no se cómo arreglarlo


Editado por jcalvach - 15/Mayo/2025 a las 10:44
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 10:57
Tendrás que ver qué caracteres ASCII son los que están entre las palabras y ver de irlos sustituyendo para que te quede el formato que tu quieras.

He probado con un copiar / pegar y me sigue escribiendo la línea dividida en dos.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 11:00
Ostras no entiendo nada Ouch
¿Has hecho un copiar y pegar a una tabla y te lo ha respetado?

¿a las lineas del excel, les has puesto un ALt+Intro?


Arriba
jcalvach Ver desplegable
Habitual
Habitual


Unido: 02/Septiembre/2009
Localización: Barcelona
Estado: Sin conexión
Puntos: 79
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 11:21
Gracias Mihura por tu aporte, 
Con tus indicaciones y IA lo puedo solucionar

Este procedimiento, repara el desastre
Lo dejo aquí por si a alguien le puede servir, junto de la explicación de por que pasa.

En realidad, Excel usa solo Chr(10) (LF) cuando haces Alt+Intro para insertar un salto de línea dentro de una celda. No utiliza Chr(13) (CR), a diferencia de Access o Word.

¿Por qué Excel usa solo Chr(10)?

Esto se debe a cómo Excel maneja internamente los saltos de línea:

AplicaciónSecuencia de salto de líneaNotas
ExcelChr(10) (LF)Al presionar Alt+Intro, inserta solo Line Feed
AccessChr(13) + Chr(10) (CR+LF)Igual que el estándar de Windows (carro y avance)
WordChr(13) (CR)Maneja internamente los saltos como CR
Windows (general)Chr(13) + Chr(10)Estándar clásico de salto de línea en archivos de texto
¿Qué significa esto en la práctica?
  • Si copias una celda de Excel con saltos (Alt+Intro) y la pegas en Notepad, los saltos no se verán bien porque Notepad espera Chr(13)+Chr(10).

  • Si exportas datos desde Access a Excel, puede que veas saltos de línea correctamente, porque Excel tolera Chr(13)+Chr(10), pero solo usa Chr(10) al crear.



Sub RepararSaltosLinea()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim texto As String

    Set db = CurrentDb
    Set rs = db.OpenRecordset("Tb_Test", dbOpenDynaset)

    Do Until rs.EOF
        texto = Nz(rs!campo0, "")
        
        ' Reemplaza Chr(10) solo por Chr(13)+Chr(10), pero evita duplicar si ya está bien
        If InStr(texto, Chr(10)) > 0 And InStr(texto, Chr(13)) = 0 Then
            texto = Replace(texto, Chr(10), Chr(13) & Chr(10))
            rs.Edit
            rs!campo0 = texto
            rs.Update
        End If

        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub



Editado por jcalvach - 15/Mayo/2025 a las 11:22
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 15/Mayo/2025 a las 13:33
Publicado originalmente por jcalvach jcalvach escribió:

Ostras no entiendo nada Ouch
¿Has hecho un copiar y pegar a una tabla y te lo ha respetado?
Si.

¿a las lineas del excel, les has puesto un ALt+Intro?
Yo no conozco otra manera de poner un salto de línea en una celda Excel.


Gracias por la explicación y la solución aportada, cierro el hilo.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable