Copia De Celdas De Un Libro a Otro

Soy principiante en la creación de macros y he hecho la siguiente mini macro:

Sub copia()
'Ésta macro copia los datos del libro de Estadísticas Consolidado al BSC a fin de conocer el NA, NS, %USO LR
'IMPORTANTE: Cada mes se debe cambiar el nombre del archivo del libro: "Estadisticas_Consolidado_Mes en curso" y el nombre del archibo del libro: "LR_Mes en curso"
Workbooks("Estadisticas_Consolidado_Diciembre").Worksheets("Estadisticas Línea Rescate").Range("g16").Copy _
Destination:=Workbooks("BSC").Worksheets("LR").Range("C5")

Workbooks("Estadisticas_Consolidado_Diciembre").Worksheets("Estadisticas Línea Rescate").Range("H16").Copy _
Destination:=Workbooks("BSC").Worksheets("LR").Range("C4")

Workbooks("LR_Noviembre").Worksheets("USO LR").Range("j42").Copy _
Destination:=Workbooks("BSC").Worksheets("LR").Range("C6")
MsgBox ("Copia Finalizada,Gracias")

End Sub

Y corre perfectamente, básicamente es, que tome el valor de una celda de un libro "x"y la copie en un libro "y"; pero quiero que cada día que la ejecute me valla copiando en C+1 en los tres.

Ejemplo: para el caso de la primera FÓRMULA EL Range("C5") sea C5+1 es decir que a la siguiente ejecutada ya no me traiga el valor a C5 sino a C6.

1 respuesta

Respuesta
1

H o l a:

La primera fórmula se pega en C5, pero la tercera fórmula se pega en C6, si quieres que la primera fórmula en la segunda ocasión se pegue en C6, te va a sobreescribir lo que escribiste pegaste en C6 en la primera ocasión.

Revísalo y me comentas.

sal u dos

Buenos Días

Creo que no me hice entender muy bien discúlpame, por favor! Lo que pasa es que yo tengo una balanced score card que se debe alimentar a diario todo el año, y básicamente lo que requiero es que me copie datos de celdas de otros libros a uno solo que es el balanced, he realizado la macro anterior y me funciona bien; pero tiene dos falencias:

La primera es que esta hecha para que traiga el dato siempre a C5 (para el caso de la primera fórmula) y en dicha celda esta el día supongamos que está el día 14/12/2015, pero si lo quisiera hacer mañana ya no me debería traer el valor a C5 sino a D5 porque ya es 15/12/2015.

Y la segunda es que solo se realice de lunes a viernes sin tener en cuenta los lunes festivos.

Agradecería enormemente si me puedes colaborar!.

Esta es la base 

H o l a:

Solamente quiero comprender lo que necesitas, primero pusiste:

"ya no me traiga el valor a C5 sino a C6"

Ahora comentas:

"ya no me debería traer el valor a C5 sino a D5"

Te anexo la macro actualizada para lo último que pides: primero C5, luego D5, supongo que después a E5, etc.

Sub copia()
'Act.Por.Dante Amor
    'Ésta macro copia los datos del libro de Estadísticas Consolidado al BSC
        'a fin de conocer el NA, NS, %USO LR
    'IMPORTANTE: Cada mes se debe cambiar el nombre del archivo del libro:
        '"Estadisticas_Consolidado_Mes en curso"
        'y el nombre del archibo del libro: "LR_Mes en curso"
    Set l1 = Workbooks("Estadisticas_Consolidado_Diciembre")
    Set h1 = l1.Worksheets("Estadisticas Línea Rescate")
    Set l2 = Workbooks("BSC")
    Set h2 = l2.Worksheets("LR")
    c = 3
    Do While Cells(5, c) <> ""
        c = c + 1
    Loop
    h1.Range("G16").Copy h2.Cells(5, c)
    h1.Range("H16").Copy h2.Range("C4")
    h1.Range("J42").Copy h2.Range("C6")
    MsgBox "Copia Finalizada", vbInformation, "Gracias"
End Sub

No entiendo esta parte que pusiste:

"Y la segunda es que solo se realice de lunes a viernes sin tener en cuenta los lunes festivos"


En la imagen que pusiste no se ven las columnas y además está vacía, si necesitas que la macro haga otra cosa, podrías poner los ejemplos completos, tal ves 2 imágenes, una mostrando la hoja antes de la macro y otra imagen mostrando la hoja con el resultado que esperas después de ejecutar la macro.

S a l u d o s . D a n t e   A m o r

Si es lo que necesitas. Podrías cambiar la valoración de la respuesta. G r a c i a s.

Muchas gracias dante, por tu colaboración efectivamente inicialmente cometí un error pero la ultima solicitud si está bien, exactamente debería traer la macro el primer día en la celda c5 luego d5, luego e5 luego f5 etc.

Si te das cuenta en la primera columna (a) esta el mes y debería adicional mente cambiar de celdas cuando el mes cambie es decir si hoy es 31 de enero debería traer el dato a la celda AG5, pero si mañana fuera el 01/feb/2015 debería traer el dato a c8 y así sucesivamente.

Respecto a lo de:

"Y la segunda es que solo se realice de lunes a viernes sin tener en cuenta los lunes festivos"

Es que el balanced score card solo se realiza de lunes a viernes, las celdas de los sábados domingos y festivos deberían saltarse o no hacerse puesto que me pegaría la información en donde no es, es como una especie de penalización, ¿yo podría realizar manualmente una "X" y donde la celda fuera diferente de "" saltara a la siguiente celda si te parece?

Adjunto la siguiente imagen en donde doy a conocer la base en la columna A encontramos en mes (enero, feb, mar etc) en la columna B están los indicadores a medir por día que son 3( na, ns, %uso lr), la macro actual que tengo me arrojo los datos que se evidencian en c3, c4, c5, pero como te comentaba necesito que el siguiente día que yo lo corra ya no lo haga sobre c3, c4, c5, sino sobre d3, d4, d5 el siguiente e3, e4, e5 etc.

Adicionamente he probado la macro y funciona excelente solo que de igual forma debe hacerse con los 3 indicadores. Gracias

Los números de la fila 2 son los días del mes.

H o l a:

Supongo que en la columna A en las celdas A36, A37 y A38 tienes el mes "Dic", entonces, si haces la ejecución el día de hoy 14 de diciembre, el día 14 está en la columna "P", entonces la macro debería escribir los indicadores en P36, P37 y P38.

Si la macro la corres de lunes a viernes y solamente en los días hábiles, entonces solamente pondrá los resultados en las columnas de días hábiles.

Si lo anterior es correcto, entonces ejecuta la siguiente macro.

Sub copia()
'Por.Dante Amor
    'Ésta macro copia los datos del libro de Estadísticas Consolidado al BSC
        'a fin de conocer el NA, NS, %USO LR
    'IMPORTANTE: Cada mes se debe cambiar el nombre del archivo del libro:
        '"Estadisticas_Consolidado_Mes en curso"
        'y el nombre del archibo del libro: "LR_Mes en curso"
    Set l1 = Workbooks("Estadisticas_Consolidado_Diciembre")
    Set h1 = l1.Worksheets("Estadisticas Línea Rescate")
    Set l2 = Workbooks("BSC")
    Set h2 = l2.Worksheets("LR")
    mes = Format(Date, "mmm")
    Set b = h2.Columns("A").Find(mes, lookat:=xlWhole)
    If Not b Is Nothing Then
        f = b.Row
        dia = Day(Date)
        c = dia + 2
        h1.Range("H16").Copy h2.Cells(b.Row, c)
        h1.Range("G16").Copy h2.Cells(b.Row + 1, c)
        h1.Range("J42").Copy h2.Cells(b.Row + 2, c)
        MsgBox "Copia Finalizada", vbInformation, "Gracias"
    Else
        MsgBox "No existe el mes: " & mes
    End If
End Sub

sal u dos

Hola dante mil gracias, todo lo que me haz dicho es correcto; pero diciembre esta en 37, 38, 39. Es increíble como haces tan rápido las macros :( quiero llegar a ser así mil gracias.

Muchas gracias.

hola dante he probado la macro y funciona bien; pero el % de uso LR no lo trae porque no esta referenciado en el código VBA tiene las mismas condiciones de NA y NS, si revisas en la primera macr que pegue está la referencia. te agradezco mucho.

ya se que es lo que paso que falto, es la referencia del libro LR_Noviembre por que el % USO LR viene de ese libro. agradecería si me puedes colaborar.

Hola nuevamente yo,

La he modificado y me ha quedado así:

Sub copia()
'Por.Paola Alarcón
'Ésta macro copia los datos del libro de Estadísticas Consolidado al BSC
'a fin de conocer el NA, NS, %USO LR
'IMPORTANTE: Cada mes se debe cambiar el nombre del archivo del libro:
'"Estadisticas_Consolidado_Mes en curso"
'y el nombre del archibo del libro: "LR_Mes en curso"
Set l1 = Workbooks("Estadisticas_Consolidado_Diciembre")
Set h1 = l1.Worksheets("Estadisticas Línea Rescate")
Set l3 = Workbooks("LR_Diciembre")
Set h3 = l3.Worksheets("USO LR")
Set l2 = Workbooks("BSC")
Set h2 = l2.Worksheets("LR")
mes = Format(Date, "mmm")
Set b = h2.Columns("A").Find(mes, lookat:=xlWhole)
If Not b Is Nothing Then
f = b.Row
dia = Day(Date)
c = dia + 2
h1.Range("H16").Copy h2.Cells(b.Row, c)
h1.Range("G16").Copy h2.Cells(b.Row + 1, c)
h3.Range("J42").Copy h2.Cells(b.Row + 2, c)
MsgBox "Copia Finalizada", vbInformation, "Gracias"
Else
MsgBox "No existe el mes: " & mes
End If
End Sub

Y me ha traído bien los resultados, sin embargo quisiera que me la revisaras como para ver si me quedo bien.

Te quedó muy bien, también te pongo calificación de Excelente!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas