Copiar datos de un libro a otro con macros

29/03/2006 - 21:52 por Filipousssispam | Informe spam
Hola, tengo el siguiente problema. Supongamos que tengo una hoja en el
libro 1 que al introducirle unos datos hace unos cálculos y genera una
serie de diferentes resultados. Yo lo que quiero hacer es copiar esos
resultados a otra hoja en otro libro en una línea, pero de forma que
cada vez que introduzca nuevos datos en la hoja del libro1 y ejecute
la macro me copie los nuevos resultados en la línea inmediatamente
inferior, y así sucesiva e indefinidamente.

O sea busco que cuando en el libro uno me hace los calculos para
determinados datos, ejecutar la macro y que los resultados me los
copie en una línea de otra hoja de otro libro cada vez que haga los
cálculos, y así me vaya rellenando la otra hoja línea a línea, una
línea cada vez que ejecute la macro y que detecte dónde tiene que
escribir los nuevos datos sin sobreescribir la línea anterior.

Normalmente lo hago a mano, pero cuando tengo que hacer 200 cálculos
diferentes es una pesadez inmensa. A lo mejor es posible hacerlo sin
macros, pero no sé cómo hacerlo.

He probado grabando macros, pero no sé cómo hacer que rellene la
siguiente fila si la anterior está ocupada. Lo máximo que he sacado es
lo siguiente (la macro se ejecuta desde el Libro1) :

Range("B2").Select
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("C3").Select
Windows("Libro1").Activate
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("D3").Select
Windows("Libro1").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
End Sub


¿Se puede hacer lo que yo quiero con las macros o necesito algún
programa externo para hacerlo?

Gracias.

Preguntas similare

Leer las respuestas

#1 Juan
29/03/2006 - 23:19 | Informe spam
Yo te sugiero que tengas en una celda oculta en valor de la fila en que
puedes copiar.
es decir, si copias del libro1 al libro2 10 registros.. en la celda oculta
ira el valor 11.
este será como un tope.. y cuando actualices buscas la celda en la que esta
el último registro (del libro 2) o sumando lo que tiene tope (celda oculta)
mas la cantidad de registros que copio.

para ubicarse en la celda donde va a copiar en el libro 2 puede utilizar

Windows("Libro2").Activate
Range("A" & tope).select
ActiveSheet.Paste

Espero te sirva..

Saludos

Juan Alejandro P.


wrote in message
news:

Hola, tengo el siguiente problema. Supongamos que tengo una hoja en el
libro 1 que al introducirle unos datos hace unos cálculos y genera una
serie de diferentes resultados. Yo lo que quiero hacer es copiar esos
resultados a otra hoja en otro libro en una línea, pero de forma que
cada vez que introduzca nuevos datos en la hoja del libro1 y ejecute
la macro me copie los nuevos resultados en la línea inmediatamente
inferior, y así sucesiva e indefinidamente.

O sea busco que cuando en el libro uno me hace los calculos para
determinados datos, ejecutar la macro y que los resultados me los
copie en una línea de otra hoja de otro libro cada vez que haga los
cálculos, y así me vaya rellenando la otra hoja línea a línea, una
línea cada vez que ejecute la macro y que detecte dónde tiene que
escribir los nuevos datos sin sobreescribir la línea anterior.

Normalmente lo hago a mano, pero cuando tengo que hacer 200 cálculos
diferentes es una pesadez inmensa. A lo mejor es posible hacerlo sin
macros, pero no sé cómo hacerlo.

He probado grabando macros, pero no sé cómo hacer que rellene la
siguiente fila si la anterior está ocupada. Lo máximo que he sacado es
lo siguiente (la macro se ejecuta desde el Libro1) :

Range("B2").Select
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("C3").Select
Windows("Libro1").Activate
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("D3").Select
Windows("Libro1").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
End Sub


¿Se puede hacer lo que yo quiero con las macros o necesito algún
programa externo para hacerlo?

Gracias.

Respuesta Responder a este mensaje
#2 Filipousssispam
30/03/2006 - 03:17 | Informe spam
Juan, muchas gracias pero no entiendo que es eso de la celda tope ni
se como ponerlo en el código del macro. ¿Como pongo la celda tope?
Gracias.

Yo te sugiero que tengas en una celda oculta en valor de la fila en que
puedes copiar.
es decir, si copias del libro1 al libro2 10 registros.. en la celda oculta
ira el valor 11.
este será como un tope.. y cuando actualices buscas la celda en la que esta
el último registro (del libro 2) o sumando lo que tiene tope (celda oculta)
mas la cantidad de registros que copio.

para ubicarse en la celda donde va a copiar en el libro 2 puede utilizar

Windows("Libro2").Activate
Range("A" & tope).select
ActiveSheet.Paste

Espero te sirva..

Saludos

Juan Alejandro P.


wrote in message
news:

Hola, tengo el siguiente problema. Supongamos que tengo una hoja en el
libro 1 que al introducirle unos datos hace unos cálculos y genera una
serie de diferentes resultados. Yo lo que quiero hacer es copiar esos
resultados a otra hoja en otro libro en una línea, pero de forma que
cada vez que introduzca nuevos datos en la hoja del libro1 y ejecute
la macro me copie los nuevos resultados en la línea inmediatamente
inferior, y así sucesiva e indefinidamente.

O sea busco que cuando en el libro uno me hace los calculos para
determinados datos, ejecutar la macro y que los resultados me los
copie en una línea de otra hoja de otro libro cada vez que haga los
cálculos, y así me vaya rellenando la otra hoja línea a línea, una
línea cada vez que ejecute la macro y que detecte dónde tiene que
escribir los nuevos datos sin sobreescribir la línea anterior.

Normalmente lo hago a mano, pero cuando tengo que hacer 200 cálculos
diferentes es una pesadez inmensa. A lo mejor es posible hacerlo sin
macros, pero no sé cómo hacerlo.

He probado grabando macros, pero no sé cómo hacer que rellene la
siguiente fila si la anterior está ocupada. Lo máximo que he sacado es
lo siguiente (la macro se ejecuta desde el Libro1) :

Range("B2").Select
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("C3").Select
Windows("Libro1").Activate
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("D3").Select
Windows("Libro1").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
End Sub


¿Se puede hacer lo que yo quiero con las macros o necesito algún
programa externo para hacerlo?

Gracias.




Respuesta Responder a este mensaje
#3 Gerson Miranda
30/03/2006 - 17:02 | Informe spam
Buen dia, una pregunta los resultados se generan siempre en una misma
columna? si es asi puedes hacer la siguiente formula =[Libro1]Hoja1!$A$1, te
va a copiar el contenido de la celda A1, despues procedes a quitarles todos
los signos de $ de la manera siguiente =[Libro1]Hoja1!A1, de esta forma
puedes copiarla hacia abajo y te va a copiar el contenido de las siguientes
celdas que necesites. espero te sirva,

Slds




"" escribió:


Hola, tengo el siguiente problema. Supongamos que tengo una hoja en el
libro 1 que al introducirle unos datos hace unos cálculos y genera una
serie de diferentes resultados. Yo lo que quiero hacer es copiar esos
resultados a otra hoja en otro libro en una línea, pero de forma que
cada vez que introduzca nuevos datos en la hoja del libro1 y ejecute
la macro me copie los nuevos resultados en la línea inmediatamente
inferior, y así sucesiva e indefinidamente.

O sea busco que cuando en el libro uno me hace los calculos para
determinados datos, ejecutar la macro y que los resultados me los
copie en una línea de otra hoja de otro libro cada vez que haga los
cálculos, y así me vaya rellenando la otra hoja línea a línea, una
línea cada vez que ejecute la macro y que detecte dónde tiene que
escribir los nuevos datos sin sobreescribir la línea anterior.

Normalmente lo hago a mano, pero cuando tengo que hacer 200 cálculos
diferentes es una pesadez inmensa. A lo mejor es posible hacerlo sin
macros, pero no sé cómo hacerlo.

He probado grabando macros, pero no sé cómo hacer que rellene la
siguiente fila si la anterior está ocupada. Lo máximo que he sacado es
lo siguiente (la macro se ejecuta desde el Libro1) :

Range("B2").Select
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("C3").Select
Windows("Libro1").Activate
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("D3").Select
Windows("Libro1").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
End Sub


¿Se puede hacer lo que yo quiero con las macros o necesito algún
programa externo para hacerlo?

Gracias.


Respuesta Responder a este mensaje
#4 Juan
31/03/2006 - 17:08 | Informe spam
la celda tope es un celda oculta o visible que contiene un numero. ese
numero es el numero de la fila que tiene el ultimo regitro en la segunda
hoja.
Entonces, cuando vas a insertar un registro en la segunda hoja.. debes decir
que sea en la fila tope+1
es decir, si en la celda A1 (que va a ser el tope) tienes un 30. el (los)
registro deben ser ingresados a partir de la celda A1+1. entoces dirias
range("A" & A1).select y ahi harias el pegado.

Es claro?

wrote in message
news:
Juan, muchas gracias pero no entiendo que es eso de la celda tope ni
se como ponerlo en el código del macro. ¿Como pongo la celda tope?
Gracias.

Yo te sugiero que tengas en una celda oculta en valor de la fila en que
puedes copiar.
es decir, si copias del libro1 al libro2 10 registros.. en la celda oculta
ira el valor 11.
este será como un tope.. y cuando actualices buscas la celda en la que
esta
el último registro (del libro 2) o sumando lo que tiene tope (celda
oculta)
mas la cantidad de registros que copio.

para ubicarse en la celda donde va a copiar en el libro 2 puede utilizar

Windows("Libro2").Activate
Range("A" & tope).select
ActiveSheet.Paste

Espero te sirva..

Saludos

Juan Alejandro P.


wrote in message
news:

Hola, tengo el siguiente problema. Supongamos que tengo una hoja en el
libro 1 que al introducirle unos datos hace unos cálculos y genera una
serie de diferentes resultados. Yo lo que quiero hacer es copiar esos
resultados a otra hoja en otro libro en una línea, pero de forma que
cada vez que introduzca nuevos datos en la hoja del libro1 y ejecute
la macro me copie los nuevos resultados en la línea inmediatamente
inferior, y así sucesiva e indefinidamente.

O sea busco que cuando en el libro uno me hace los calculos para
determinados datos, ejecutar la macro y que los resultados me los
copie en una línea de otra hoja de otro libro cada vez que haga los
cálculos, y así me vaya rellenando la otra hoja línea a línea, una
línea cada vez que ejecute la macro y que detecte dónde tiene que
escribir los nuevos datos sin sobreescribir la línea anterior.

Normalmente lo hago a mano, pero cuando tengo que hacer 200 cálculos
diferentes es una pesadez inmensa. A lo mejor es posible hacerlo sin
macros, pero no sé cómo hacerlo.

He probado grabando macros, pero no sé cómo hacer que rellene la
siguiente fila si la anterior está ocupada. Lo máximo que he sacado es
lo siguiente (la macro se ejecuta desde el Libro1) :

Range("B2").Select
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("C3").Select
Windows("Libro1").Activate
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
Range("D3").Select
Windows("Libro1").Activate
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Libro2").Activate
ActiveSheet.Paste
End Sub


¿Se puede hacer lo que yo quiero con las macros o necesito algún
programa externo para hacerlo?

Gracias.







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