Ajuda Script conexão com 2 bancos

Bom dia,

possuo uma aplicação onde leio um arquivo de texto e dependendo de um parâmetro envio a informação para o banco de dados A ou para o banco de dados B, ambos em IPs diferentes, e quando preciso realizar a leitura, leio o banco de dados A e caso não encontre leio o banco de dados B.
até ai tudo certo, consigo realizar tudo que preciso sem problemas.

a minha dificuldade está em quando um desses bancos não está disponível, seja por rede ou porque está desligado o computador, a aplicação trava por bastante tempo, sei que tem parametros para melhorar porém não consegui entender em quais mexer, e além disso gostaria de retornar uma mensagem de erro caso isso aconteça.

alguém poderia me ajudar?

segue exemplo da rotina de conexão:

Bom dia!
Acredito que consiga resolver seu problema adicionando uma verificação do estado da conexão do banco antes de tentar executar a consulta, na sua função selectBanco.
Se entendi corretamente, você possui dois objetos diferentes de consulta que tem o nome de acordo com o idSQl, e suponho que cada uma dessas consutlas esteja atrelada à um objeto de banco de dados (aquele amarelo), onde você deve possuir um para cada banco.

Nesses objetos (DBServer), existe a propriedade connectionActive, que te retorna um booleano de acordo com a conexão do banco, ou seja, se eles não estiverem disponíveis, essa propriedade será Falso e tu pode verificar então essa condição antes de tentar executar sua consulta:

Function selectBanco(idSql, idPreOrdem, id)
set objDB = Application.GetObject([caminho-pro-objeto-bancodedados-AouB])
if objDB.ConnectionActive then
' .... segue o codigo que já possui
else
msgbox "O banco de dados não está disponível"
End Function

Além disso, outra dica que pode ajudar na performance, percebi que você retorna dessa funçã o objeto recordSet, executando o método gerADORecordset. Ao utilizar esse método, a consulta também é executada para que retorne o Recordset, por isso, você não precisa utilizar o método Execute da consulta antes de chamar o getADoRecordset, pois ele serve para executar apenas sem retornar objetos. Dessa forma atual você acaba executando duas vezes sem necessidade, pois somente a segunda vez está sendo usada