1

У меня есть книга Excel, в которой выполняется код VBA, который я использую каждый день. Во время выполнения он продолжает зависать в диалоговом окне с сообщением «Microsoft Excel ожидает, пока другое приложение завершит действие OLE». Нажатие "ОК" позволяет продолжить выполнение кода, но часто диалоговое окно снова появляется через несколько секунд и продолжает делать это в течение от 15 минут до 2 часов (когда я сдался). В момент появления диалогового окна код подключается к удаленному компьютеру с помощью WMI и выполняет запрос:

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")

Кажется, это тот же компьютер (строка), который каждый раз зависает, поэтому моя текущая теория состоит в том, что у него возникают проблемы с подключением к WMI на рассматриваемом компьютере, и вместо того, чтобы просто отключить тайм-аут и продолжить, он застревает. У меня есть проверки по пути, чтобы пропустить текущий компьютер, если какой-либо тест не пройден. Он пытается разрешить DNS-имя, затем пытается пропинговать, затем пытается подключиться через WMI и затем выполняет запрос.

Я искал ответ без успеха. Я не совсем знаком с OLE, кроме того, что знаю (для Excel), что это способ размещения содержимого не электронных таблиц в электронной таблице. Но я бы не подумал, что это как-то связано с выполнением запросов WMI через VBA? Кто-нибудь может дать мне толчок в правильном направлении?

0