Imprimir página | Cerrar ventana

Problema al importar Texto de Excel a Access

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=87071
Fecha de impresión: 26/Marzo/2026 a las 15:54


Tema: Problema al importar Texto de Excel a Access
Publicado por: jcalvach
Asunto: Problema al importar Texto de Excel a Access
Fecha de publicación: 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.




Respuestas:
Publicado por: Mihura
Fecha de publicación: 14/Mayo/2025 a las 18:06
¿Cómo haces la importación?

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

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: jcalvach
Fecha de publicación: 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.


Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: jcalvach
Fecha de publicación: 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


Publicado por: Mihura
Fecha de publicación: 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.


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

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: jcalvach
Fecha de publicación: 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


Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: jcalvach
Fecha de publicación: 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?




Publicado por: jcalvach
Fecha de publicación: 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



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es



Imprimir página | Cerrar ventana