Excel - Macro que copia dato de varias hojas de un libro a otro

 
Vista:
sin imagen de perfil

Macro que copia dato de varias hojas de un libro a otro

Publicado por Claudio (3 intervenciones) el 14/02/2017 01:30:17
Buenas tardes, compañeros

Quisiera que me ayudaran a optimizar esta macro, la hace lo siguiente copia los datos de las hojas que representas el dia del mes actual y los pega en otra libro, pero quisiera que sea mas corto no tan tedioso. Si es posible utilizar un bucle. Adjunto los archivos

Les adjunto la rutina que he elaborado:

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
Sub MetodoAbrirLibro()
Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
 
Ayer = DateSerial(Year(Now), Month(Now), Day(Now)) - 1
 
Workbooks.Open "\\10.7.10.1\logistica\Logistica Publico\Bodega\inventarios_bodega\Cierre de Inventarios " & Format(Now, "yyyy") & "\cierre inventarios " & Format(Ayer, "mmmm") & ".xls"
 
Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
Sheets("1").Select
Application.Union(Range("D18:E18"), Range("J18")).Select
Selection.Copy
 
Windows("Indicadores.xlsm").Activate
Sheets("Hoja1").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues
 
Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
Sheets("2").Select
Application.Union(Range("D18:E18"), Range("J18")).Select
Selection.Copy
 
Windows("Indicadores.xlsm").Activate
Sheets("Hoja1").Select
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues
 
Asi sucesivamente hasta culminar la hoja que representa el ultimo dia del mes actual
 
Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
ActiveWindow.Close
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

Macro que copia dato de varias hojas de un libro a otro

Publicado por JuanC (1237 intervenciones) el 14/02/2017 11:54:33
algo así puede ser el bucle...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
n = 3
 For i = 1 To 31
    Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
    Sheets(CStr(i)).Select
    Application.Union(Range("D18:E18"), Range("J18")).Select
    Selection.Copy
 
    Windows("Indicadores.xlsm").Activate
    Sheets("Hoja1").Select
    Range("B" & n).Select
    Selection.PasteSpecial Paste:=xlPasteValues
 
    n = n + 1
 Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro que copia dato de varias hojas de un libro a otro

Publicado por Claudio (3 intervenciones) el 14/02/2017 21:16:08
Buenas tardes compañero
Gracias por sus aportes, me sale un error ya que para este mes son solo 28 dias ahy es donde me genera el error.
Que se puede hacer para el bucle corra segun los dias del mes actual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro que copia dato de varias hojas de un libro a otro

Publicado por JuanC (1237 intervenciones) el 14/02/2017 21:58:05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim meses As Variant
Dim n&, dias_mes%
n = 3
meses = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
dias_mes = meses(VBA.Month(Date) - 1)
For i = 1 To dias_mes
    Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
    Sheets(CStr(i)).Select
    Application.Union(Range("D18:E18"), Range("J18")).Select
    Selection.Copy
 
    Windows("Indicadores.xlsm").Activate
    Sheets("Hoja1").Select
    Range("B" & n).Select
    Selection.PasteSpecial Paste:=xlPasteValues
 
    n = n + 1
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Macro que copia dato de varias hojas de un libro a otro

Publicado por Claudio (3 intervenciones) el 15/02/2017 00:14:08
Mi hermano muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar