Copiar datos de archivo csv a archivo excel

Soy nueva por estos lares, gracias de antemano si me pueden ayudar con este dilema que tengo.

Tengo una macro en una hoja excel, mediante la cual intento copiar los datos contenidos en un archivo csv.

Me funciona casi bien, sólo que al pegarme los datos del csv en excel, no distingue las comas y en cada fila todo lo que debería aparecer copiado en columnas separadas me aparece en la primera columan separado por comas, ¿alguna idea de cómo variar mi código?

Sub copiardatos()

Dim libroorigen, libroacopiar As Workbook
libroorigen = ThisWorkbook.Name
'abrimos el libro del cual queremos copiar los datos
Set libroacopiar = Workbooks.Open(Application.GetOpenFilename("CSV Files (*.csv), *.csv", , "Hoja a copiar"))
        With libroacopiar
            'seleccionamos los datos y los copiamos
            ActiveSheet.Range("A1:BZ401").Select
            Application.CutCopyMode = xlCopy
            Selection.Copy
            'copiamos los datos seleccionados del otro libro
            Workbooks(libroorigen).Activate
            Worksheets("datos").Select
            ActiveSheet.[A1].Select
            ActiveSheet.Paste
            ActiveSheet.[A1].Select
        End With
libroacopiar.Close False    'cerramos el libro a copiar sin guardar cambios
Set libroacopiar = Nothing

End Sub

2 respuestas

Respuesta
1

Resulta que tu código sirve para imcrustar datos de una Hoja de Excel a Otra,

Pero en el caso de los archivos .CSV, no son hojas de Excel, sino un formato de Archivo de Texto, delimitados (por coma, Punto y coma) y encerrados en comillas (" ")

Para traer esos datos a Excel debes usar funciones de Apertura, Lectura/Escritura y Cierre de Archivo. El nombre puede variar según el lenguaje, pero suelen llamarse: Fopen, Fread, fWrite, fClose

Algoritmo:

1. Abre archivo

2. bCiclo = False

3. Ciclo mientras bCiclo = false

4.Lee Linea de Archivo (Fread/fReadline, etc)

5.si eof() -> bCiclo = true ... Va a 3

6. De lo contrario,

6.1 Ciclo por cada Campo de la Línea Leída

6.2 si llega al final de la línea, Va a 3...

6.3 de lo contrario lee campo, Inserta en excel

7. va a 6.1

Suerte!

Muchas gracias, ahora tengo un problema añadido, y es que el csv que contiene los datos, al abrirlo no lo hace con los caracteres UTF-8 (me he asegurado que el csv está guardado con dichos caracteres), por lo que las tildes, etc., me aparecen caracteres raros...

Agradezco tu ayuda, si crees que debo ponerlo como un hilo en todoexpertos avísame, que soy novata por estos lares.

La macro que tengo es la siguiente:
Sub volcar_datos()
Dim libroorigen, hojaorigen, librocondatos As String
Dim error As Double
libroorigen = ThisWorkbook.Name
hojaorigen = ThisWorkbook.Worksheets("datos").Name
librocondatos = Workbooks(libroorigen).Worksheets(hojaorigen).[A1].Value
'INSTRUCCIONES SI EL LIBRO ESTÁ CERRADO
On Error Resume Next
Dim AbrirArchivo As Variant
AbrirArchivo = Application.GetOpenFilename
If Right(AbrirArchivo, 4) <> ".xls" And _
    Right(AbrirArchivo, 5) <> ".xlsx" And _
    Right(AbrirArchivo, 4) <> ".csv" Then
    Exit Sub
End If
    Workbooks.OpenText Filename:=AbrirArchivo, _
    DataType:=xlDelimited, Semicolon:=True, _
    Comma:=False, Local:=False
'operaciones a realizar
Workbooks(librocondatos).Activate
    'seleccionamos los datos y los copiamos
    ActiveSheet.Range("A1:BZ401").Select
    Application.CutCopyMode = xlCopy
    Selection.Copy
Workbooks(libroorigen).Worksheets(hojaorigen).Activate
    'pegamos los datos seleccionados del otro libro
    Worksheets("datos").Activate
    ActiveSheet.[A2].Select
    ActiveSheet.Paste
ActiveSheet.[F1].Select
End Sub

Anexame una muestra de tu archivo csv

Respuesta

¿

¿Tendrás el archivo?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas