AGUARDAR ATUALIZAÇÃ...
 
Compartilhar:
Notifications
Clear all

[Resolvido] AGUARDAR ATUALIZAÇÃO QUERYTABLE COM AFTERREFRESH


AMORIM123
Posts: 77
Registered
Topic starter
(@amorim123)
Trusted Member
Entrou: 4 anos atrás

Fala galera.

Depois de um tempo pesquisando parece que conseguir um exemplo decente sobre como utilizar o evento de tabela de planilha obtida de fontes de dados externa com Power Query; porém ainda não entendi como manusear esse evento.

Como resultado de minhas pesquisas obtive a informação que o evento deveria ser inserido em módulo de classe onde poderia ser melhor reaproveitado; segue abaixo o que foi feito.

No modulo de classe inseri isso:

Private WithEvents qtCustom As QueryTable

Public Function Initialise(qtInput As QueryTable)
Set qtCustom = qtInput
End Function

Private Sub qtCustom_AfterRefresh(ByVal Success As Boolean)
' After Refresh
MsgBox "Tabelas atualizadas com sucesso!!", vbInformation, "Table Att Successfully"

End Sub

No modulo do meu programa tenho esse código:

Private Sub btn_att_Click()

shtALL.Activate
shtALL.ListObjects("ALL").QueryTable.Refresh

shtNCM.Activate
shtNCM.ListObjects("NCM").QueryTable.Refresh

'Antes de chegar na próxima linha entendo que a msgbox do módulo de classe deveria ser executada (não consegui vê 'ainda quantas vezes ela seria apresentada, pois se o evento identificar toda atualização, talvez isso seja um problema,'' 'pois o ideal seria que a msgbox fosse exibida ao final de todas atualizações), porém a msgbox do evento não executa; dá 'aquela travadinha, pois os dados têm uma certa quantidade, mas ao final a msgbox não é emitida como esperado.

Frm_Processar.btn_ncm = True

End Sub

Se alguém já tiver passado por isso e puder contribuir, então desde já fico muito grato pela interação...vlw

Responder
1 Reply
AMORIM123
Posts: 77
Registered
Topic starter
(@amorim123)
Trusted Member
Entrou: 4 anos atrás

Bem esse assunto parece não ser muito abordado. Não tive muito sucesso aqui no fórum e em outros fóruns em português. Nos fóruns gringos como o do Mr.Excel a galera também tem muita dúvida sobre como utilizar a funcionalidade do evento AfterRefresh. Não consegui usar ele, mas consegue resolver meu problema que era identificar a atualização das minhas tabelas e fazer algo após.

Basicamente vc só precisa saber sobre o conceito Sincronismo VS Assincronismo nas atualizações de QueryTable.

O melhor conteúdo falando sobre foi a live do Ronan Vico com Fábio Gatti ( https://www.youtube.com/watch?v=uereL8NxPng )

Ficou assim minha solução:

Private Sub btn_att_Click()


On Error GoTo TableRefreshFailed

shtALL.Activate
shtALL.ListObjects("ALL").QueryTable.Refresh BackgroundQuery:=False


shtNCM.Activate
shtNCM.ListObjects("NCM").QueryTable.Refresh BackgroundQuery:=False


MsgBox "Tabelas atualizadas com sucesso!!", vbOKOnly

With Frm_Processar

.txt_xmlnfe.Value = ""
.txt_xmlcte.Value = ""
.txt_arq.Value = ""

.btn_xmlnfe.Enabled = True
.btn_xmlcte.Enabled = False
.btn_arq.Enabled = False
.btn_att.Enabled = False
.btn_ncm.Enabled = True

End With

Exit Sub
TableRefreshFailed:
MsgBox "Possívelmente o caminho selecionado podera não conter arquivos de seu tipo " & Chr(13) & _
"Por favor, verifique o tipo de arquivo informado e tente novamente. Caso o problema " & Chr(13) & _
"persista, procure o Administrador", vbCritical, "Atenção!"
Err.Clear
On Error GoTo TableRefreshFailed
Resume Next

End Sub
Responder
Compartilhar: