Excel - Macro VBA toma de datos de diferentes libros / ficheros Excel

 
Vista:

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder