Eu tenho uma pasta de trabalho do Excel que está executando algum código do VBA, que uso todos os dias. Durante a execução, ele fica pendurado em uma caixa de diálogo dizendo "O Microsoft Excel está aguardando outro aplicativo concluir uma ação OLE". Clicar em "OK" permite que o código continue, mas muitas vezes a caixa de diálogo reaparece depois de alguns segundos e continua fazendo isso de 15 minutos a 2 horas (quando eu desisti). No momento em que a caixa de diálogo é exibida, o código está se conectando a um computador remoto usando o WMI e executando uma consulta:
If xlSheet.Cells(intRow, xlSheet.Range("Ping").Column).Value = "Yes" Then
On Error Resume Next
Set objWMI = GetObject("winmgmts:\" & xlSheet.Cells(intRow, xlSheet.Range("Name").Column).Value & "\root\cimv2")
If Err.Number = 0 Then
Set colWin32OperatingSystem = objWMI.ExecQuery("SELECT Version, ServicePackMajorVersion, ServicePackMinorVersion FROM Win32_OperatingSystem")
Parece ser o mesmo computador (linha) que é interrompido todas as vezes, portanto, minha teoria atual é que ele está tendo problemas para se conectar ao WMI no computador em questão e, em vez de apenas expirar e continuar, está ficando preso. Eu tenho cheques ao longo do caminho para pular o computador atual se algum teste falhar. Ele tenta resolver o nome DNS e, em seguida, tenta efetuar ping e, em seguida, tenta se conectar via WMI e, em seguida, executa a consulta.
Eu procurei por uma resposta sem sucesso. Eu não estou totalmente familiarizado com OLE, além de saber (para o Excel) é uma maneira de colocar conteúdo não-planilha na planilha. Mas eu não teria pensado que isso tinha algo a ver com a execução de consultas WMI por meio do VBA? Alguém pode me dar um empurrão na direção certa?