H o l a:
Lo que hace la instrucción DoEvents es actualizar la información. Pero el control de la ejecución la tiene todavía el libro de la macro, es decir, la macro está en un loop y no va a soltar el control hasta que termine el loop.
Lo que puedes hacer es ejecutar el método OnTime, en este método estableces cada cuanto tiempo quieres que se ejecute la macro.
Lo siguiente es lo que se puede hacer:
Primero, tenemos la macro "iniciar" que es el disparador de la macro2.
Observa como al principio de las macros, está declarada la variable "detener".
Lo que tenemos en la macro "iniciar", es una especie de contador, el contador lo puedes poner en cualquier celda.
Segundo, la macro2 se va a estar ejecutando cada 5 segundos.
Puedes cambiar el lapso de tiempo en esta parte, por ejemplo a cada 30 segundos:
Application. OnTime Now + TimeValue("00:00:30"), "macro2",, True
Tercero, la macro2 ejecuta a la macro1. La macro1 se va a ejecutar hasta que la variable "detener" cambie a True
Por último, en la macro1, tienes que poner una condición, cuando se cumpla dicha condición la variable "detener" debe cambiar a True, en ese momento la macro se detiene.
En mi ejemplo, puse un contador, cuando el contador sea mayor a 3, entonces la macro se detiene.
Después de la condición, puedes poner el código que quieres que se ejecute. Recuerda que si estás en otro libro, y la macro1 actualiza datos del libro1, entonces tienes que hacer referencia al libro1, ya que si no haces referencia y estás en el libro2, puede ser que se actualicen celdas del libro2.
Cuando la macro esté en ejecución, entonces puedes cambiarte de libro y trabajar en otros libros.
La macro completa:
Dim detener
'
Sub iniciar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")     'hoja con el contador
    h1.[A5] = 1                     'Se inicia el contador en 1 en alguna celda
    detener = False                 'se inicia detener igual a False
    Call Macro2                     'Se ejecuta la macro2
End Sub
'
Sub Macro2()
'Por.Dante Amor
    If detener Then
        MsgBox "La macro terminó"
        Exit Sub
    End If
    'La macro2 se va a ejecutar cada 5 segundos
    Application.OnTime Now + TimeValue("00:00:05"), "macro2", , True
    macro1
End Sub
'
Sub macro1()
'Por.Dante Amor
    'En esta parte hay que poner una condición.
    'Cuando se cumpla la condición entonces la variable detener cambia a True
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")     'hoja con el contador
    If h1.[A5] > 3 Then             'si el contador es mayor a 3 termina la macro
        detener = True
        Exit Sub
    End If
    h1.[A5] = h1.[A5] + 1           'Se incrementa el contador
    '
    'En esta parte va tu macro
End Sub
':)
':)