Macro para Abrir un Libro, llenar celdas, guardar dicho libro y Cerrarlo

3 envíos / 0 nuevos
Último envío
reyesjae10
Imagen de reyesjae10
Offline
última acción: Hace 7 años 5 meses
alta: 14/11/2016 - 03:56
Puntos: 25
Macro para Abrir un Libro, llenar celdas, guardar dicho libro y Cerrarlo

 

Buenas noches, Aprovecho este foro para consultar un problema ha resolver,  el cual relato a continuación: Debo realizar una macro que al ejecutarla abra un libro llamado “GraficadeProdc.xls” en la hoja “Base” se debe llevar un registro diario de la producción de la empresa. El libro Origen  “Producción.xls” en la hoja llamada “PRODUCCIÓN” se encuentran los datos a copiar, entre las Celdas “C18:F18”.

Admito que me he guiado de otros foros e información que he encontrado en a red, pero; estoy bloqueado en el paso en que al copiar los datos desde el libro origen hasta el libro destino, lo haga en la fila consecutiva es decir; el día 1 en la fila 1 consecutivamente.

Trate de restar las fechas y el resultado de esta operación me da la fila, claro conociendo que las columnas permanecen constante,Este es el código que estoy realizando

Sub Copiar_Celdas()

'Definir objetos a utilizar
Dim wbDestino As Workbook, _
    wsOrigen As Excel.Worksheet, _
    wsDestino As Excel.Worksheet, _
    rngOrigen As Excel.Range, _
    rngDestino As Excel.Range

Dim Dia As String
Dia = Worksheets("PRODUCCIÓN_STM").Range("C12").Value ' Esta es la instrucción que me da la fila

'Indicar el libro de Excel destino
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "\GraficadeProdc.xls")

'Activar este libro
ThisWorkbook.Activate

'Indicar las hojas de origen y destino
Set wsOrigen = Worksheets("PRODUCCIÓN")
Set wsDestino = wbDestino.Worksheets("Balance")

'Indicar la celda de origen y destino
Const celdaOrigen = "C18:F18"
celdaDestino = "B5:E5" 'Aqui esta el problema, necesito que este rango cambie con el día

'Inicializar los rangos de origen y destino
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)

'Seleccionar rango de celdas origen
rngOrigen.Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy


'Pegar datos en celda destino
rngDestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False

'Guardar y cerrar el libro de Excel destino
wbDestino.Save
wbDestino.Close


End Sub

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 6 días 11 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Pues se puede hacer de muchas

Pues se puede hacer de muchas maneras, depende de lo que haya en esa variable Dia, que tienes declarada como String

por ejemplo imaginando que en dia tienes el número de la fila, sólo tendrías que concatenar

celdaDestino = "B" & dia & ":E" & dia

 

 

 

------
Ya sé Excel, pero necesito más.

davega1989 (no verificado)
Imagen de davega1989
he intentado la solución que

he intentado la solución que comentáis pero me da error. Me dice que es necesaria una expresión de constante. 

Yo tengo puesto 

const celdaOrigen= "A"& fila

donde fila es el número de fila de la celda activa que he definido anteriormente. Me podéis ayudar?

 

gracias