Outra possibilidade é a técnica de varredura em um determinado local (como uma pasta de dados ou uma subestação), procurando objetos de um tipo específico (tags internos, disjuntores, etc). Isto pode ser feito utilizando a instrução for each e o método TypeName. Um exemplo:
'aponto o local a ser varrido
set folder = Application.GetObject("Dados")
'para cada objeto existente no local
for each obj in folder
'se ele for do tipo desejado
If TypeName(obj) = "InternalTag" then
MsgBox obj.Name
End If
next
No lugar da MsgBox, pode-se também colocar a ação que se deseja fazer sobre aquele objeto.
Caso queira varrer todos os objetos de dados da aplicação, deve-se apontar o local para a propriedade Application de um objeto de dados qualquer. Por exemplo:
'aponto o local a ser varrido
set folder = Application.GetObject("Dados").Application
Antes de prosseguir para a próxima lição, recomendamos a leitura dos seguintes artigos:
KB-31936: Função que retorna o tipo de um objeto.
Percorrendo todos os tags de um Driver.
Artigos Relacionados:
- Automação na geração de códigos: Introdução.
- Automação na geração de códigos: Lição 1 – Trabalhando com vetores.
- Automação na geração de códigos: Lição 2 – Lendo informações de um arquivo Excel.
- Automação na geração de códigos: Lição 3 – Transformando uma string em um vetor.
- Automação na geração de códigos: Lição 5 – Adicionando objetos por script.
- Automação na geração de códigos: Lição 6 – Verificando a existência prévia de um objeto.
- Automação na geração de códigos: Lição 7 – Eventos para execução do script.
Boa tarde, necessito de um script que copie as configurações extras de um driver modelo para os restantes, através do evento CustomConfig, com o intuito de padronizar a função “Start Driver Offline” para todos os drivers da aplicação.
Porém, quando eu tento aplicar o código acima para varrer todos os objetos da aplicação, ocorre um erro informando que o objeto não suporta esse tipo de propriedade ou método.
Sub xc_StartDriverOffline_CustomConfig()
set drv_modelo = Application.GetObject(“Drivers.Religador_TAVRIDA_TA_NF”)
set folder = Application.GetObject(“Drivers.Religador_TAVRIDA_TA_NF”).Application
configuraDriver drv_modelo, folder
End sub
‘————————————————————————————————‘
Sub configuraDriver (drv_modelo, folder)
For each obj in folder
If TypeName(obj) = “IODrv.IODriver” then
obj.ExtraConfig = drv_modelo.ExtraConfig
else
configuraDriver drv_modelo, folder
end if
Next
End Sub
Olá Djuli,
Para varrer todos os objetos de uma aplicação independente do projeto ou pasta que esteja, utilize o método Application.ListFiles() no evento CustomConfig, segue exemplo abaixo:
Sub XObject1_CustomConfig()
for each obj in Application.ListFiles(“IODriver”)
MsgBox obj.Name
next
End Sub