Consolidar múltiples hojas de varios excel

Espero que por favor me puedan ayudar, ya que todos los meses lo hago manual, pero creo que se puede hacer más eficiente con macros. Tengo 3 planillas excel, con hojas que representa un dia del mes, y quiero pegar unos valores dejandolas siempre en la planilla destino.xls Le agradezco Dante Amor que me ayudó con una código que me funcionó perfecto, pero ahora quiero adaptarla para agregar una cuarta planilla, esta vez con fórmulas.

El código que escribió Dante es el siguiente:

Sub Consolidar_Hojas()
'Por Dante Amor
  Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
  Dim uDia As Long, i As Long, mes As Long
  Dim hojaDia As String, hojaMes As String
  '
  Set wb1 = Workbooks("Avance.xls")
  Set wb2 = Workbooks("Destino.xls")
  Set wb3 = Workbooks("Agua.xls")
  '
  mes = Month(Date)
  uDia = Day(DateSerial(Year(Date), mes + 1, 1) - 1)
  hojaMes = Format(DateSerial(Year(Date), mes, 1), "mmmm")
  '
  For i = 1 To uDia
    hojaDia = "Avance " & Format(i, "00") & "." & Format(mes, "00") & "." & Format(Date, "yy")
    'pasa los datos de Avance a Destino
    Wb2. Sheets(Format(i, "00")). Range("K2").Value = wb1. Sheets(hojaDia). Range("M18")
    Wb2. Sheets(Format(i, "00")). Range("AM1").Value = wb1. Sheets(hojaDia). Range("E31")
    '
    'paso los datos de la hoja mes a Destino
    wb2.Sheets(Format(i, "00")).Range("L1").Value = wb3.Sheets(hojaMes).Range("N" & i + 5)
  Next
  '
  MsgBox "Fin"
End Sub

Sucede que tengo una cuarta planilla llamada gas.xls, con hojas según día: "1-4"; "2-4"..."29-4"; "30-4". Esta vez quiero copiar la celda H35 desde gas.xls hacia destino.xls y pegarla como valor en W2. También copiar desde gas.xls la suma de "H33 + H34" y pegarla como valor en destino V2. Finalmente, copiar la celda B25 de gas.xls hacia destino en X2, pero con la condición SI (B25 <1) entonces pegar el valor cero 0.

1 Respuesta

Respuesta
1

Prueba lo siguiente:

Sub Consolidar_Hojas()
'Por Dante Amor
  Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook, wb4 As Workbook
  Dim uDia As Long, i As Long, mes As Long
  Dim hojaDia As String, hojaMes As String, hojagas As String
  Dim valor As Variant
  '
  Set wb1 = Workbooks("Avance.xls")
  Set wb2 = Workbooks("Destino.xls")
  Set wb3 = Workbooks("Agua.xls")
  Set wb4 = Workbooks("Gas.xls")
  '
  mes = Month(Date)
  uDia = Day(DateSerial(Year(Date), mes + 1, 1) - 1)
  hojaMes = Format(DateSerial(Year(Date), mes, 1), "mmmm")
  '
  For i = 1 To uDia
    hojaDia = "Avance " & Format(i, "00") & "." & Format(mes, "00") & "." & Format(Date, "yy")
    hojagas = i & "-" & mes
    'pasa datos de AVANCE a Destino
    Wb2. Sheets(Format(i, "00")). Range("K2").Value = wb1. Sheets(hojaDia). Range("M18")
    Wb2. Sheets(Format(i, "00")). Range("AM1").Value = wb1. Sheets(hojaDia). Range("E31")
    '
    'pasa datos de AGUA a Destino
    wb2.Sheets(Format(i, "00")).Range("L1").Value = wb3.Sheets(hojaMes).Range("N" & i + 5)
    '
    'pasa datos de GAS a Destino
    Wb2. Sheets(Format(i, "00")). Range("W2").Value = wb4. Sheets(hojagas). Range("H35")
    Wb2. Sheets(Format(i, "00")). Range("V2").Value = wb4. Sheets(hojagas).Range("H33") + wb4. Sheets(hojagas). Range("H34")
    valor = wb4.Sheets(hojagas).Range("B25")
    If valor < 1 Then
      wb2.Sheets(Format(i, "00")).Range("X2").Value = 0
    Else
      wb2.Sheets(Format(i, "00")).Range("X2").Value = valor
    End If
  Next
  '
  MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas