es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , , ,

Answer

  1. Avatar for 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:

    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
    
            ' Convertir números largos a texto
            Range("C10").Select ' Reemplaza con la celda superior izquierda de tus datos
            Range(Selection, Selection.End(xlToRight)).Select
            Selection.TextToColumns Destination:=Range("C10"), DataType:=xlFixedWidth, FieldInfo:=Array(0, 1)
        End If
    End Sub
    

    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.

Comments are closed.