Página 1 de 1

Erro ao atualizar conexão web (Office 2016)

Enviado: 08 Jul 2020 às 18:39
por fbelisario
Pessoal,
Estou desenvolvendo um projeto que possui uma conexão web com um arquivo CSV. Tenho rotinas que atualizam essa conexão utilizando a função RefreshAll (e, em alguns casos, apenas Refresh, quando desejo atualizar apenas 1 das conexões).
Durante os testes inciais correu tudo bem (rodando no Office 365). O problema surgiu quando rodei testes no Office 2016: após a execução do código, o Excel ativa a aba onde está essa conexão e seleciona o área dessa conexão. A simples mudança de aba e seleção da área não seriam problema, mas acontece que o código inserido após a atualização para retorno à aba de chamada não funciona, e preciso clicar com o mouse para retornar à aba desejada.
Tentei incluir a função DoEvents após a chamada de atualização para aguardar a conclusão antes de direcionar para a aba desejada, mas sem sucesso.

Estrutura:
  • Aba 1: Principal (botão que chama a função de atualizar e células que buscam valores atualizados da aba "Consulta")
    Aba 2: Consulta (conexão web com arquivo CSV)
Abaixo o código utilizado:
Código: Selecionar todos
Sub AtualizaConexao()
    With ThisWorkbook
        .RefreshAll
        DoEvents
        .Sheets("Principal").Activate
        .Sheets("Principal").Range("A1").Select
        MsgBox "Concluído"
    End With
End Sub
Alguém já se deparou com algo do tipo e teria alguma sugestão para solução?
Obrigado!

Re: Erro ao atualizar conexão web (Office 2016)

Enviado: 09 Jul 2020 às 08:24
por babdallas
Veja se resolve a sua necessidade. Para funcionar, você deve fazer o refresh da query específica e setar antes a propriedade BackgroundQuery para False.

Re: Erro ao atualizar conexão web (Office 2016)

Enviado: 10 Jul 2020 às 14:46
por fbelisario
babdallas,
Obrigado pelo retorno. Rodando sua solução em minha máquina, tenho o erro "Application-defined or object-defined error". Ainda, em sua solução você deixou tudo em uma aba, mas para minha solução final preciso que a consulta web esteja em uma aba separada da aba principal.
Na planilha que eu havia anexado anteriormente já havia deixado a conexão com a função desabilitada para atualização em background. Fiz uma nova versão desabilitando o backgroundquery via VBA e atualizando a conexão específica, mas o comportamento é o mesmo.
Código: Selecionar todos
Sub AtualizaConexao()
    With ThisWorkbook
        .Connections("Query - Query1").OLEDBConnection.BackgroundQuery = False
        .Connections("Query - Query1").Refresh
        DoEvents
        .Sheets("Principal").Activate
        .Sheets("Principal").Range("A1").Select
        MsgBox "Concluído"
    End With
End Sub