Importación de CSV en VBA: los números largos no se escriben completos
Tengo un archivo CSV que quiero mostrar en mi hoja de cálculo utilizando QueryTable.
Debido a que tengo números largos, quiero dar formato a las celdas como texto (porque los últimos dígitos se convierten en “0”).
Intenté dar formato a las celdas de antemano y configurar “PreserveFormatting” en Verdadero, pero esto me deja aún con un número “E+16” y si hago clic en él, los últimos 2 dígitos son reemplazados por “0”.
¿Sabes alguna manera de obtener el número completo escrito como texto en la celda?
Este es mi CSV:
1,Nombre1,Apellido1,26778942223654789,,,,,,,,,,,
2,Nombre2,Apellido2,31678678797467889,,,,,,,,,,,
3,Nombre3,Apellido3,31657894475133527,,,,,,,,,,,
4,Nombre4,Apellido4,35448512368896137,,,,,,,,,,,
Y este es mi código:
Sub Personen_importieren()
import_path = Range("A2").Text
If import_path <> False Then
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & import_path, Destination:=ActiveSheet.Range("A9"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.PreserveFormatting = True
.AdjustColumnWidth = False
.Refresh
End With
End If
End Sub
davy.ai
Para mostrar números largos como texto en Excel, puedes utilizar el método TextToColumns después de importar el archivo CSV. Aquí tienes un código actualizado que hace esto:
Después de actualizar la QueryTable, el código selecciona todas las celdas con números largos y aplica el método TextToColumns con un tipo de dato de ancho fijo y un solo campo con un ancho de 1 caracter. Esto convertirá los números a texto y preservará su longitud completa. Puedes ajustar el ancho del campo para que coincida con la longitud máxima de tus números.