Macro VBA toma de datos de diferentes libros / ficheros Excel
Publicado por jacve96 (1 intervención) el 02/12/2019 07:34:22
Hola a todos,
Estoy tratando de realizar una macro en excel para realziar una operacion rutinaria que debo hacer a diario de toma de datos pero me atasco a mitad de ella. Espero que alguien pueda ayudarme a solucionar el problema!
Consiste en que desde un fichero desde donde realizo un análisis de datos que se toman desde otros ficheros que otras personas rellenan diariamente, y que hasta ahora yo traspasaba a mano copiando y pegando, se realicen automaticamente. De momento he conseguido programar que desde el fichero donde realizo el análisis tome los datos de otro libro y los copie en una hoja nueva, pero al tener que sumar celdas no consecutivas (aunque siempre en la misma posicion) y traspasar dicha suma a la celda final en una hoja aparte de ese mismo libro de análisis , no consigo sacar un resultado. ¿Alguien sabe como se puede realizar esto?
El siguiente paso seria programa la macro para qque en vez de un libro tomara los datos dia dia recorriendo los diferentes ficheros dependiendo de su nombre, que es la fecha del dia, pero eso seria el paso final una vez conseguido lo anterior.
Gracias a todo el que pueda ayudar! Dejo el codigo que realice hasta el momento:
Y la segunda parte que no consigo hacer funcionar, la idea de la que parto:
Estoy tratando de realizar una macro en excel para realziar una operacion rutinaria que debo hacer a diario de toma de datos pero me atasco a mitad de ella. Espero que alguien pueda ayudarme a solucionar el problema!
Consiste en que desde un fichero desde donde realizo un análisis de datos que se toman desde otros ficheros que otras personas rellenan diariamente, y que hasta ahora yo traspasaba a mano copiando y pegando, se realicen automaticamente. De momento he conseguido programar que desde el fichero donde realizo el análisis tome los datos de otro libro y los copie en una hoja nueva, pero al tener que sumar celdas no consecutivas (aunque siempre en la misma posicion) y traspasar dicha suma a la celda final en una hoja aparte de ese mismo libro de análisis , no consigo sacar un resultado. ¿Alguien sabe como se puede realizar esto?
El siguiente paso seria programa la macro para qque en vez de un libro tomara los datos dia dia recorriendo los diferentes ficheros dependiendo de su nombre, que es la fecha del dia, pero eso seria el paso final una vez conseguido lo anterior.
Gracias a todo el que pueda ayudar! Dejo el codigo que realice hasta el momento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Sub TomaDEDatos() ' Tomar datos de los partes
'Definir objetos a utilizar
Dim wbOrigen As Workbook, _
wsOrigen As Worksheet, _
wbDestino As Workbook, _
wsDestino As Excel.Worksheet, _
rngOrigen As Excel.Range, _
rngDestino As Excel.Range
' No ver operaciones
Application.ScreenUpdating = False
Sheets("CopiaDatosParte").Visible = True
'Indicar el libro de Excel y hoja origen
Set wbOrigen = Workbooks.Open("DireccionArchivo")
Set wsOrigen = wbOrigen.Worksheets("18-10-19")
'Indicar el libro de Excel y hoja destino
Set wbDestino = Workbooks(ThisWorkbook.Name)
Set wsDestino = wbDestino.Worksheets("CopiaDatosParte")
'Activar libro de Origen
wbOrigen.Activate
'Activar Hoja de Origen
wsOrigen.Activate
'Indicar la celda de origen y destino
Const celdaOrigen = "A1"
Const celdaDestino = "A1"
'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("4:55").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
'Pegar datos en celda destino
rngDestino.PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Sheets("CopiaDatosParte").Visible = False
'Guardar y cerrar el libro de Excel destino
wbOrigen.Close SaveChanges:=False
End Sub
Y la segunda parte que no consigo hacer funcionar, la idea de la que parto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub TrasladoDatosAHistoric()
'Copiar datos
Sheets("CopiaDatosParte").Select
' No ver operaciones
Application.ScreenUpdating = False
' Definir valores parte
Dim Acumuladoprod As Integer, _
Acumuladosat As Integer, _
Acumuladofc As Integer, _
Acumuladoave As Integer, _
Acumuladofab As Integer, _
Acumuladolimp As Integer, _
Acumuladootros As Integer, _
Acumuladofiabilidad As Integer
'Sumar los valores de los partes de mañana y tarde
Acumuladoprod = 0
Acumuladoprod = Cells(13, 4) + Cells(54, 4)
Acumuladosat = 0
Acumuladosat = Cells(13, 8) + Cells(54, 8)
Acumuladofc = 0
Acumuladofc = Cells(13, 7) + Cells(54, 7)
Acumuladoave = 0
Acumuladoave = Cells(13, 6) + Cells(54, 6)
Acumuladofab = 0
Acumuladofab = Cells(13, 10) + Cells(54, 10)
Acumuladolimp = 0
Acumuladolimp = Cells(13, 9) + Cells(54, 9)
Acumuladootros = 0
Acumuladootros = Cells(13, 11) + Cells(54, 11)
Acumuladofiabilidad = 0
Acumuladofiabilidad = Cells(13, 6) + Cells(13, 9) + Cells(13, 10) + Cells(13, 11) + Cells(54, 6) + Cells(54, 9) + Cells(54, 10) + Cells(54, 11)
End Sub
Valora esta pregunta


0