当用户单击“刷新”/“全部刷新”按钮时,excel似乎只为工作簿中的每个(或选定的)QueryTable调用刷新方法。但是,监听QueryTable的BeforeRefresh和AfterRefresh事件并不能在这里帮助我,因为我需要在 all 之后执行一些工作,在工作簿中的QueryTables(分别在所有选定的QueryTables之后)被更新。< / p>
有没有办法实现这个目标?也许有可能以某种方式听一下鼠标点击刷新按钮?
答案 0 :(得分:1)
实际上,这是我打算首先实现这一目标的方式。但这里有一个问题。可以说QueryTables的总数是10.并且假设用户只选择了一个QueryTable,然后按下“全部刷新”。因此,我的算法将检查所选的QueryTables的数量是否为1.因此,我的计算将在1次刷新后开始,这是错误的。
与此同时,我试图访问功能区中的“刷新”按钮。但它没有成功。出于某种原因,我的代码没有做任何事......
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.ToString)
End Try
End Sub
End Class
编辑:我忘记了登录数据,因此我创建了一个新帐户
答案 1 :(得分:0)
我没有使用VSTO,但我会调查:
AfterRefresh
事件中调用一个过程您每次也可以检查Success
参数,这样只有在所选QT都已成功更新后,您的代码才会运行。