RE:PASAR DATOS DE UNA HOJA DE EXCEL A OTRA
Hola que tal, pasando al tema de interés primero necesitas saber la cantidad de filas o registros que tiene la hoja destino esto para poder copiar el rango total para saber cual es el último registro con datos puedes usar el siguiente codigo:
Workbooks("SALES ORDERS DOORS.xls").Worksheets("Registro").Activate
Dim ren As Integer
ren = 3
Dim col As Integer
col = 1
Dim val As String
Dim rentot As Integer
rentot = 3
Do
If ren > 3 Then
rentot = rentot + 1
End If
val = Cells(ren, col).Value
ren = ren + 1
Loop While val <> Empty
Obtener_urenRegistro = rentot
Claro que necesitas adecuarlo a tus necesidades, mira la variable ren contine el numero de renglon inicial en mi caso inicia en la fila 3,
la variable col es para saber en que columna va a hacer la busqueda, la variable val sirve para almacenar los datos contenidos en la celda especificada por ren y col, este ciclo terminara hasta que val sea Empty, es decir que no contenga información, rentot es para saver en que fila se encuentra la primer celda sin información, cabe señalar que para copiar un rango debemos poner rentot - 1 de esa forma copiaremos solo las celdas que contengan informacion por ejemplo:
Workbooks("SALES ORDERS DOORS.xls").Worksheets("Hoja1").Activate
"La instruccion anterior activa la hoja y el libro de donde vamos a copiar los registros"
Set rango1 = Workbooks("SALES ORDERS DOORS.xls").Sheets _("Hoja1").Range(Cells(inicio, 1), Cells(rentot -1, 50))
"Las anteriores lineas especifican el rango a copiar, donde inicio es el renglon donde esta el primer registro, así como tenemos que especificar en cual libro y en que hoja está el rango especificado"
Workbooks("SALES ORDERS DOORS.xls").Worksheets("31 JUL").Activate
"La instruccion anterior activa la hoja y el libro a donde vamos a copiar los registros"
Set rango2 = Workbooks("SALES ORDERS DOORS.xls").Sheets _
("31 JUL").Range(Cells(urenSOD, 1), Cells(urenSOD, 50))
"Lo anterior es para especificar el rango así como el libro y la hoja donde vamos a pegar los registros, donde urenSOD contiene el valor de la primera fila que no contenga información."
rango2.Insert shift:=xlShiftDown, copyOrigin:=rango1.Copy
"La ultima instrucción es para insertar la informacion del rango 1 en el rango 2, el Shift:=xlShiftDown establece acia donde se insertaran los registros en este caso nos interesa que sea hacia abajo, y el copyOrigin:=rango1.Copy especifica el origen de la copia que en este caso es el rango 1"
la nomenclatura de Cells es la siguiente
Cells(num_ren , num_col)
en tu caso num_col será igual a tres puesto que tus registros solo tienen 3 columnas
Despues de hacer las copiar el rango, puedes borar el rango al agregar la palabra delete, por ejem
rango1.delete
o si te quieres evitar lo anterior en ves de poner:
rango2.Insert shift:=xlShiftDown, copyOrigin:=rango1.Copy
tendrás que poner
rango2.Insert shift:=xlShiftDown, copyOrigin:=rango1.Cut
en este caso cortaras el rango, no lo copiaras, pero tiene el mismo efecto, pues podras pegarlo donde quieras, estos codigos los puedes poner en una sola macro o en funciones a las cuales llames dentro de la macro principal.
Atte: Edgardo