insertar un bloque en otro bloque de manera automatica

27/06/2006 - 20:24 por Isaac | Informe spam
- Tengo un bloque en la hoja1 del archivo centrales.xls; el bloque esta
nombrado como "datos_cent"; este bloque puede ser de 2 filas, tres filas,
cuatro filas etc,: esto hace que cambie el rango, pero como lo llamo por el
nombre "datos_cent" no importa que crezca.

tengo otro bloque en la hoja2 del archivo matriz.xls; el bloque esta
nombrado como "datos_tot"; en este bloque intento insertar las filas que
corresponden al bloque "datos_cent".

me envian muchos archivos centrales.xls, que es lo que intento hacer, lo
abro y luego lo cierro, para obtener el bloque "datos_cent"

la rutina es abrir un archivo centrales.xls y el de matriz.xls, e insertar
el bloque "datos_cent" en "datos_tot", pero para evitar que se desajuste el
bloque "datos_tot", debo insertar tantas filas como la que tiene el bloque
"datos_cent", la idea es que una columna de este bloque tenga puros numeros
uno, y de esa manera sabria cuantas filas tiene.

- Ya tengo el dato de cuantas filas tiene el bloque "datos_cent", y
quiero que automaticamente se inserten ese numero de filas en "datos_tot"
(digamos que este bloque comprende a1:m50, entonces que se posicione en a2 e
inserte ese numero de filas), para que copie el bloque y lo pegue tal cual
en el espacio que se abrio.


No se si esta mas claro.

Saludos, Isaac

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/06/2006 - 05:08 | Informe spam
hola, Isaac !

-> suponiendo que en el rango 'datos_cent' de la hoja1 de cada libro 'centrales.xls' NO contiene formulas/formatos/...
que pudieran llegar a 'entorpecer' un 'simple' copy/paste a la hoja1 del libro 'matriz.xls'
prueba la siguiente macro en algun modulo de codigo 'normal' del libro 'matriz.xls' que tendrias que 'ejecutarla'...
-> teniendo [cada libro] 'centrales.xls' como libro 'activo' [de pasadita, le deje la instruccion del 'ordenar' 'datos_tot'] ;)

Sub Inserta_x_filas()
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... en la hoja1... centrales.xls... bloque... nombrado como "datos_cent"... puede ser de 2 filas, tres filas... etc.
... como lo llamo por el nombre "datos_cent" no importa que crezca.
... en la hoja2... matriz.xls... bloque... nombrado como "datos_tot"... intento insertar las filas... bloque "datos_cent".
... me envian muchos archivos centrales.xls... la rutina es abrir... centrales.xls y el de matriz.xls, e insertar... "datos_cent" en "datos_tot"
... para evitar que se desajuste el bloque "datos_tot", debo insertar tantas filas como la que tiene el bloque "datos_cent"
... la idea es que una columna de este bloque tenga puros numeros uno, y de esa manera sabria cuantas filas tiene.
... tengo el dato de cuantas filas tiene el bloque "datos_cent", y quiero que automaticamente se inserten... en "datos_tot"
... digamos que... comprende a1:m50... que se posicione en a2 e inserte ese numero de filas
... que copie el bloque y lo pegue tal cual en el espacio que se abrio.
Respuesta Responder a este mensaje
#2 Isaac
28/06/2006 - 13:36 | Informe spam
Estimado "Héctor Miguel"

la macro funciono solamente adicionando las lineas para activar los libros
en cuestion y quedo de la siguiente manera:

Sub Inserta_x_filas()
Windows("centrales.xls").Activate ' ADICIONADA
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate ' ADICIONADA
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub

funciona a la perfección, tengo unos detalles mas que comentare mas delante.

Saludos desde Mexico

Isaac


escribió en el mensaje
news:
hola, Isaac !

-> suponiendo que en el rango 'datos_cent' de la hoja1 de cada libro
'centrales.xls' NO contiene formulas/formatos/...
que pudieran llegar a 'entorpecer' un 'simple' copy/paste a la hoja1
del libro 'matriz.xls'
prueba la siguiente macro en algun modulo de codigo 'normal' del libro
'matriz.xls' que tendrias que 'ejecutarla'...
-> teniendo [cada libro] 'centrales.xls' como libro 'activo' [de
pasadita, le deje la instruccion del 'ordenar' 'datos_tot'] ;)

Sub Inserta_x_filas()
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... en la hoja1... centrales.xls... bloque... nombrado como
"datos_cent"... puede ser de 2 filas, tres filas... etc.
... como lo llamo por el nombre "datos_cent" no importa que crezca.
... en la hoja2... matriz.xls... bloque... nombrado como "datos_tot"...
intento insertar las filas... bloque "datos_cent".
... me envian muchos archivos centrales.xls... la rutina es abrir...
centrales.xls y el de matriz.xls, e insertar... "datos_cent" en
"datos_tot"
... para evitar que se desajuste el bloque "datos_tot", debo insertar
tantas filas como la que tiene el bloque "datos_cent"
... la idea es que una columna de este bloque tenga puros numeros uno, y
de esa manera sabria cuantas filas tiene.
... tengo el dato de cuantas filas tiene el bloque "datos_cent", y quiero
que automaticamente se inserten... en "datos_tot"
... digamos que... comprende a1:m50... que se posicione en a2 e inserte
ese numero de filas
... que copie el bloque y lo pegue tal cual en el espacio que se abrio.




Respuesta Responder a este mensaje
#3 Héctor Miguel
29/06/2006 - 00:40 | Informe spam
hola, Isaac !

la macro funciono solamente adicionando las lineas para activar los libros en cuestion y quedo de la siguiente manera:
Sub Inserta_x_filas()
Windows("centrales.xls").Activate ' ADICIONADA
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate ' ADICIONADA
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub



solo comentarte que [generalmente] no es necesario 'andar brincando entre libros y hojas para usar sus objetos :))
puedes hacer una referencia 'completa' al libro/hoja y rangos que necesitas usar SIN 'tener que' des/re/activarlos [p.e.]
ActiveWorkbook [obviamente] se refiere al libro que se encuentra en la ventana activa de la aplicacion
ThisWorkbook [obviamente] se refiere al libro que contiene el modulo de codigo con el procedimiento 'en ejecucion'
Workbooks("libro X") es una referencia al 'libro x' que [obviamente] se encuentra abierto en la sesion

entonces... puedes recortar el codigo [y evitar la 'danza' entre libros] a +/- lo siguiente:
Sub Inserta_x_filas()
Workbooks("centrales.xls").Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida