Saltar al contenido

copiar y pegar mas de 3530 datos


Recommended Posts

publicado

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

publicado

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.

publicado

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

publicado

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.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.