Verificar se objeto existe

Bom dia

Eu tentei procurar no fórum, porém não encontrei nada neste sentido.

Eu copiei esse código de um exemplo que fizeram para mim, que ele testa se o objeto existe, e mostra a mensagem caso não exista. Contudo ele está dando erro nesta parte já: set testObj = dvr.Item(Parent.Item(“Grupo1”).Item(“spNome”).Value)

O que estou fazendo de errado? Ou qual a forma correta de verifricar se o objeto existe no E3?

'Local do driver
set dvr  = Application.GetObject(Parent.Item("Grupo1").Item("spDrive").Value)
set dvrr = Application.GetObject("Dados")

'Verifica se existe o bloco de comunicação
'procura o bloco para saber se realmente apagou
set testObj  = dvr.Item(Parent.Item("Grupo1").Item("spNome").Value)
set testObjj = dvrr.Item(Parent.Item("Grupo1").Item("spNome").Value)

'se ocorreu um erro, o objeto foi apagado
If Err.Number <> 1 then
	'Apaga o bloco
	.....

	'Anula o “On Error Resume Next”.
	on error goto 0
Else
	Msgbox("O bloco de comunicação " & Parent.Item("Grupo1").Item("spNome").Value & " não existe, por este motivo, será criado!")
End if

Agradeço desde já.

@wagner.dracha, bom dia.

Qual erro aparece?

Sds.

Coloca um MsgBox antes dos sets dvr e testObj para verificar se os itens spDrive e spNome estão devidamente preenchidos. Exemplo:

MsgBox Parent.Item("Grupo1").Item("spDrive").Value
'Local do driver
set dvr  = Application.GetObject(Parent.Item("Grupo1").Item("spDrive").Value)
set dvrr = Application.GetObject("Dados")

MsgBox Parent.Item("Grupo1").Item("spNome").Value
'Verifica se existe o bloco de comunicação
'procura o bloco para saber se realmente apagou
set testObj  = dvr.Item(Parent.Item("Grupo1").Item("spNome").Value)
set testObjj = dvrr.Item(Parent.Item("Grupo1").Item("spNome").Value)

@Fernando, quanto ao código, eu acho que está certo, pois se eu manualmente criar o objeto na pasta Driver e depois executar este código, ele funciona perfeitamente.

O problema é quando não tem o objeto na pasta Driver… que é essa a intenção deste código, checar se o item existe na pasta Driver.

Mas vou testar mesmo assim. Já posto o resultado.

e depois o erro:

A linha 158 é essa:
set testObj = dvr.Item(Parent.Item(“Grupo1”).Item(“spNome”).Value)

Na verdade, o erro está normal, pois eu estou tentando buscar um objeto que não existe, que é a ERE600.

Só que é isso que eu quero fazer… Como checar se esse objeto existe?

Por favor, verifica se desta forma funciona:

'Local do driver
set dvr  = Application.GetObject(Parent.Item("Grupo1").Item("spDrive").Value)
set dvrr = Application.GetObject("Dados")

On Error Resume Next

'Verifica se existe o bloco de comunicação
'procura o bloco para saber se realmente apagou
set testObj  = dvr.Item(Parent.Item("Grupo1").Item("spNome").Value)
set testObjj = dvrr.Item(Parent.Item("Grupo1").Item("spNome").Value)

'se ocorreu um erro, o objeto foi apagado
If Err.Number <> 0 then
	'Apaga o bloco
	.....

	'Anula o “On Error Resume Next”.
	on error goto 0
Else
	Msgbox("O bloco de comunicação " & Parent.Item("Grupo1").Item("spNome").Value & " não existe, por este motivo, será criado!")
End if
1 Like

Funcionou! Só para eu entender, ele identifica o erro, mas manda continuar o programa novamente, isso?

Isso mesmo. Quando ocorre o erro, o script segue “correndo” dentro do If, do contrário vai para o Else.

Notar também que foi modificada a sintaxe do IF comparando a 0 e não a 1.

Alguns artigos de referência aqui e aqui.

1 Like