Lorsque l'user clique sur le button "Actualiser" / "Refresh All", Excel semble appeler simplement la méthode de rafraîchissement pour chaque (ou sélectionné) QueryTable (s) dans le classur. Cependant, l'écoute des events BeforeRefresh et AfterRefresh pour QueryTable ne m'a pas vraiment aidé ici, car j'ai besoin d'exécuter certaines fonctionnalités après que toutes les QueryTables dans le classur (respectivement après tous les QueryTables sélectionnés) soient mises à jour.
Y a-t-il un moyen d'y parvenir? Peut-être est-il possible d'écouter un clic de souris sur ce button de rafraîchissement?
En fait, c'est comme ça que je voulais l'accomplir en premier lieu. Mais il y a un problème ici. Disons que le nombre total de QueryTables est 10. Et disons que l'user vient de sélectionner un QueryTable, puis appuyez sur "Actualiser tout". Donc, mon algorithm vérifiera le nombre de QueryTables sélectionné qui est 1. En conséquence, mes calculs commencent après seulement 1 rafraîchissement qui est incorrect.
En attendant, j'ai essayé d'accéder à ce button "Actualiser" dans le ruban. Mais cela n'a pas fonctionné. Pour une raison quelconque, mon code ne fait rien …
Public Class ThisAddIn Private Sub ThisAddIn_Startup() Handles Me.Startup AddHandler Globals.ThisAddIn.Application.WorkbookActivate, AddressOf OnWorkbookOpened End Sub Private refrBtn As Office.CommandBarButton Private Sub OnClick(ByVal Ctrl As Office.CommandBarButton, _ ByRef CancelDefault As Boolean) MsgBox("PLS WORK!") End Sub Private Sub OnWorkbookOpened(wb As Excel.Workbook) Try refrBtn = CType(wb.Application.CommandBars.FindControl(Id:=459), Office.CommandBarButton) AddHandler refrBtn.Click, AddressOf OnClick Catch ex As Exception MsgBox(ex.Message) MsgBox(ex.GetType) MsgBox(ex.StackTrace.ToSsortingng) End Try End Sub End Class
Edit: J'ai oublié mes données de connection, j'ai donc créé un nouveau count
Je n'utilise pas VSTO mais je voudrais enquêter:
AfterRefresh
, appelez une procédure Vous pouvez également vérifier l'argument Success
chaque fois, afin que votre code ne s'exécute que si les QT sélectionnés ont tous été mis à jour avec succès.