Jump to content

copiar y pegar mas de 3530 datos


Recommended Posts

buen dia

esperando que me puedan contestar una duda que tengo.

he creado una macro para copiar y pegar datos de diferentes libros *.csv a un libro *.xls donde consigo copiar y pegar solo 3530 datos. dado que cada libro *.csv hay aproximadamente 3530 datos el resultado final que me arroja el archivo *.xls es solo guarda los datos del ultimo libro que gusdo como si los pegara encima del anterior

la macro que hice fue esta

[ Sub analisis2()

'

'

'

Dim FolderPath As String

Dim FileName As String

Dim files As String

nbre = Format(Now, "dd-mm-yy")

files = "C:\pomini2\" & nbre & "\analisis.xlsx"

Set car = CreateObject("Scripting.FileSystemObject")

Set file = car.CreateFolder("c:\pomini2\" & nbre)

Workbooks.Add

ActiveWorkbook.SaveAs FileName:="C:\pomini2\" & nbre & "\analisis.xlsx", _

FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Range("A1").Select

ActiveCell.FormulaR1C1 = "Date"

Range("B1").Select

ActiveCell.FormulaR1C1 = "Time"

Range("C1").Select

ActiveCell.FormulaR1C1 = "V Cabezal"

Range("D1").Select

ActiveCell.FormulaR1C1 = " C Rueda"

Range("E1").Select

ActiveWorkbook.Save

Workbooks.Close

FolderPath = "C:\datos\"

FileName = Dir(FolderPath & "*.csv")

Do While FileName <> ""

Set WorkBk = Workbooks.Open(FolderPath & FileName)

Range("A2").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Workbooks.Open files

Range("A2").Select

ActiveCell.End(xlUp).Select

ActiveCell.Offset(1, 0).Select

ActiveSheet.Paste

ActiveWorkbook.Save

ActiveWorkbook.Close

Workbooks.Close

FileName = Dir()

Loop

Workbooks.Open files

End Sub

]

no se si tiene que tener un formato la hoja de excel o estoy mal en la macro pues apenas estoy empezando y quise hacer algo que paracia sencillo, espero que sea suficiente explicacion gracias de antemano por su tiempo

Link to comment
Share on other sites

Hola Carlos,

Revisando tu código, tengo la impresión de que el problema lo tenés en las líneas

    Range("A2").Select
ActiveCell.End(xlUp).Select[/CODE]

1º te parás en A2 y luego te vas hacia arriba (End(xlUp)). Probá poniendo xlDown a ver si se soluciona.

No hay que setear nada del formato de la planilla para que esto salga bien.

Para la próxima, recordá las reglas del foro, si hubieras subido un archivo sería más fácil responderte.

Link to comment
Share on other sites

muchas gracias por tu respuesta

al momento de ejecutar lo que comentaste salio un error "1004" error definido por la aplicacion o el objeto

me marca el error en la linea

ActiveCell.Offset(1, 0).Select

y me fije que la celda seleccionada era la ultima del libro (A1048576)

adjunte 2 archivos que son de donde saco los datos

y un archivo que resulta de ejecutar la macro con la respuesta anterior

el archivo que genera sin modificar la macro es muy grande para adjuntarlo

pero gracias por tu respuesta y tu tiempo

- - - - - Mensaje combinado - - - - -

muchas gracias por tu respuesta

al momento de ejecutar lo que comentaste salio un error "1004" error definido por la aplicacion o el objeto

me marca el error en la linea

ActiveCell.Offset(1, 0).Select

y me fije que la celda seleccionada era la ultima del libro (A1048576)

adjunte 2 archivos que son de donde saco los datos

y un archivo que resulta de ejecutar la macro con la respuesta anterior

el archivo que genera sin modificar la macro es muy grande para adjuntarlo

pero gracias por tu respuesta y tu tiempo

053110.zip

053111.zip

analisis2.zip

Link to comment
Share on other sites

Eso te ocurría porque, en la primer pasada del loop buscaba la última celda utilizada después de A2, y como todavía no había ninguna, la selección se desplazaba a la última fila y trataba de rellenar ahí los datos. Con esa fila no había problema, pero la siguiente... ERROR ! -claro, se acaba la planilla =).

Te aclaro que hay muchas formas de resolver tu inquietud, veamos si ésta funciona y luego buscamos de depurar un poco más el código:

Do While FileName <> ""    Set WorkBk = Workbooks.Open(FolderPath & FileName)
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Workbooks.Open files
Range("A2").Select
If ActiveCell.Value <> "" Then [COLOR=#008000]'si la celda A2 tiene información, entonces...[/COLOR]
ActiveCell.End(xlDown).Offset(1, 0).Select [COLOR=#008000]'selecciona la celda siguiente a la última ocupada de la columna A[/COLOR]
End If
[COLOR=#008000]' ActiveCell.Offset(1, 0).Select 'LINEA ELIMINADA![/COLOR]
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Workbooks.Close
FileName = Dir()
Loop[/CODE]

IMPORTANTE! Solo por comodidad y claridad, únicamente pegué aquí el LOOP, que es la parte del código que hay que modificar.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Crear macros Excel

  • Posts

    • Hola a ambos, @gonzalomadrid, en Word de M365 sí funciona. Basta con que escribas =rand() para que te aparezca el texto. Si eliges =rand(2,3) te aparecerá un texto con 2 párrafos y 5 operaciones. En Excel, hasta donde yo sé, es diferente. Tal como te comenta @Abraham Valencia, dispones de =ALEATORIO() y =ALEATORIO.ENTRE() para generar números aleatorios. El propio 'Help' de Excel explica muy bien argumento y sintaxis de ambas funciones. Saludos,  
    • Hola, descargar mejor la versión (2). Saludos. MImgUrl(2).xlsm
    • Hola Medio enredado lo que escribes, pero creo que en realidad lo que buscas es ALEATORIO.ENTRE o RANDBETWEEN si usas Excel en inglés.    
    • Muchas gracias a todos por sus aportes, me han resultado de mucha utilidad, al final lo pude resolver utilizando temporalmente la funcion de reemplazar para sacar la operacion requerida y despues de eso lo volvi a dejar como estaba. Un saludo para todos
    • aquel famoso - y antiguo-    = Rand (8,5)   ¿funciona en    en excel 2019? y de paso ¿funciona en word 2019 y demás office? A mi no me funciona ni a tiros, ni ese ni   = Rand () ni Lorem Ipsum() ni nada parecido para meter texto dummy o aleatorio. ¿alguien  sabe algo?  
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy