Si mi archivo .csv abre bien en excel desde mis archivos, ¿Por que al importarlo desde otro archivo de excel lo copia unido?

Mi archivo .csv abre bien, si solo lo abro desde mis archivos, como se ve en la imagen, se mira perfecto.

Pero si yo abro un archivo nuevo en excel, y le pongo un botón con código vba para exportar mi archivo .csv de la imagen anterior, lo pega asi:

yo tengo esta macro, y lo pega como la imagen anterior

Option Explicit
Sub ImportText()
    Dim fileToOpen As Variant
    Dim fileFilterPattern As String
    Dim wsMaster As Worksheet
    Dim wbTextImport As Workbook
    Application.ScreenUpdating = False
    fileFilterPattern = "Text Files (*.txt; *.csv),*.txt;*.csv"
    fileToOpen = Application.GetOpenFilename(fileFilterPattern)
    If fileToOpen = False Then
        MsgBox "No file selected."
    Else
        Workbooks.OpenText _
            Filename:=fileToOpen, _
            StartRow:=2, _
            DataType:=xlDelimited, _
            Other:=True, _
comma:=True
        Set wbTextImport = ActiveWorkbook
        Set wsMaster = ThisWorkbook.Worksheets("Base de Datos")
        wbTextImport.Worksheets(1).Range("A1").CurrentRegion.Copy wsMaster.Range("A3")
        wbTextImport.Close False
 End If
    Application.ScreenUpdating = True
End Sub

Pero como se ve en la siguiente imagen, si es un archivo .CSV pero esta abierto en excel como si fuera un archivo .xlsx

1 respuesta

Respuesta
2

En VBA es necesario abrir el archivo con la configuración local, prueba esto:

Sub ImportText()
  Dim fileToOpen As Variant
  Dim fileFilterPattern As String
  Dim wsMaster As Worksheet
  Dim wbTextImport As Workbook
  '
  Application.ScreenUpdating = False
  fileFilterPattern = "Text Files (*.txt; *.csv),*.txt;*.csv"
  fileToOpen = Application.GetOpenFilename(fileFilterPattern)
  If fileToOpen = False Then
    MsgBox "No file selected."
  Else
    Workbooks.Open Filename:=fileToOpen, UpdateLinks:=0, Local:=True
    Set wbTextImport = ActiveWorkbook
    Set wsMaster = ThisWorkbook.Worksheets("Base de Datos")
    wbTextImport.Worksheets(1).Range("A1").CurrentRegion.Copy wsMaster.Range("A3")
    wbTextImport.Close False
  End If
  Application.ScreenUpdating = True
End Sub

Me funcionó perfecto :o, muchas gracias gracias gracias

De casualidad sabe como agregarle un código que me borre todo el registro importado, al momento que quiera importar uno nuevo? 

No había respondido en todo el día porque estaba realizando algunos trámites personales.

Al final de mi respuesta hay un botón para valorar.

Después de esta línea:

Set wsMaster = ThisWorkbook.Worksheets("Base de Datos")

Agrega esta línea:

WsMaster. Cells. Clear

Al final de mi respuesta hay un botón para valorar.

No se preocupe, me ayudo perfecto, muchas gracias, buenísimo. Votada como excelente. 

Solución final

WsMaster. Cells. Clear 'para limpiar la hoja
'Encantado de ayudarte, gra cias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas