«Переменная Object [или With block] не установлена» является эквивалентом VBA «исключения нулевой ссылки» других языков, ошибка, возникающая при попытке доступа к членам объекта, когда ссылка на этот объект null
, или вТермины VBA, Nothing
.
Это именно то, что происходит здесь:
cmd.ActiveConnection = conn
Объект cmd
был объявлен, но никогда не инициализирован.Set
это экземпляр New
класса ADODB.Command
для решения проблемы:
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
Часть сообщения «С блоком» относится к синтаксису блока With
:
Dim cmd As ADODB.Command
With cmd ''<< error 91 here
'...
End With
Вы можете использовать With New
, чтобы ссылка на объект содержалась в блоке With
, без необходимости объявления локальной переменной:
With New ADODB.Command
'...
End With