Excel Application.Ready = False cuando se reciben datos a través de COM dll

Estoy entregando datos externos usando la interfaz de despacho a través de un dll COM a un plugin de Excel. En el método de sumidero de VBA, compruebo que Application.Ready = True antes de intentar escribir los datos en la celda adecuada como esta,

If Application.Ready = True Then With Workbooks(bookName).Sheets(sheetName).Range(rangeName) .Value = thisData End With Else Debug.Print "Dropped Payload" End If 

No quiero simplemente dejar caer los datos, así que he intentado hacer algunas cosas para hacerlo bien.

  • Llame a Application.OnTime en lugar de establecer el valor. Desafortunadamente, Excel no me dejaba llamar a Application.OnTime cuando Application.Ready = False.
  • Usa la técnica aquí para iniciar un timer de Windows que luego llama a OnTime. El problema aquí era que varios events estaban llegando uno encima del otro e intentaban acceder al AfterUDFRoutine1 simultáneamente, lo que provocaba un locking.

Así que mi último pensamiento es poner los datos en una queue y luego drenar la queue cuando Application.Ready = True. Para implementar esto, necesito un evento que se active cuando Application.Ready cambie de estado, pero no puedo encontrar el evento en la list. ¿Alguien sabe si esto existe y cómo exponerlo? Alternativamente, si alguien tiene una mejor idea de cómo hacer que esto funcione, estoy muy abierto. La única sugerencia que no puedo hacer es utilizar RTD en lugar del despacho que ya tengo: no puedo cambiar esa parte.

¡Gracias por adelantado!