Como Importar ficheros texto a Excel mediante una macro.

Tengo que importar varios ficheros texto a Excel y algunos campos tienen ceros a la izquierda y cuando se importan a excel pierdo los ceros. Aqui dejo la macro que uso para cualquier ayuda de que puede estar pasando. Necesito que se importe a excel como un campo text con todos los ceros.

Sub Join_Textfile()
  Dim sh As Worksheet, wb As Workbook, arch As Variant
  Dim lr1 As Long, lr2 As Long, lr3 As Long
  Dim sDatos As Variant, sNombre As String
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  Set sh = Sheets("To_import")
  sh.Rows("2:" & Rows.Count).ClearContents
  With Application.FileDialog(msoFileDialogFilePicker)
      .Title = "Seleccione archivos txt"
      .Filters.Clear
      .Filters.Add "Todos los archivos", "*.txt"
      .AllowMultiSelect = True
      .InitialFileName = "C:\trabajo\folder1"
      If .Show Then
        For Each arch In .SelectedItems
          sDatos = Split(arch, "_")
          sNombre = Split(sDatos(UBound(sDatos)), ".")(0)
          '
          Workbooks.OpenText Filename:=arch, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
            Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), _
            Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), _
            Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), _
            Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1)), TrailingMinusNumbers:=True
          '
          Set wb = ActiveWorkbook
          lr1 = wb.Sheets(1).Range("A" & Rows.Count).End(3).Row
          lr2 = sh.Range("A" & Rows.Count).End(3).Row + 1
          wb.Sheets(1).Rows("2:" & lr1).Copy sh.Range("A" & lr2)
          lr3 = sh.Range("A" & Rows.Count).End(3).Row
          sh.Range("Y" & lr2 & ":Y" & lr3).Value = sNombre
          wb.Close False
        Next
      End If
  End With

 Un saludo y en espera de alguna recomendacion,

Aleida

1 respuesta

Respuesta
1

Te invito a SUSCRIBIRTE a mi canal de YouTube:

Excel y Macros

Ahí encontrarás más sobre Excel y Macros:

https://www.youtube.com/channel/UCs644-v3ti4SF7zE_bt_YXA 

Comparte los enlaces en tus redes sociales.


Cambia en esta línea los 1 por 2:

          Workbooks.OpenText Filename:=arch, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
            Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), _
            Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), _
            Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), _
            Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1)), TrailingMinusNumbers:=True

Así:

          Workbooks.OpenText Filename:=arch, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
            Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), _
            Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), Array(11, 2), _
            Array(12, 2), Array(13, 2), Array(14, 2), Array(15, 2), Array(16, 2), _
            Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2), Array(22, 2), Array(23, 2), _
            Array(24, 2), Array(25, 2), Array(26, 2), Array(27, 2)), TrailingMinusNumbers:=True

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas