1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| '@Folder "Ribbon"
'@Description "Callbacks for ribbon management."
Option Explicit
Private mUIRibbon As Office.IRibbonUI
#If VBA7 Then
Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)
#Else
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)
#End If
#If VBA7 Then
Private Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
#Else
Private Function GetRibbon(ByVal lRibbonPointer As Long) As Object
#End If
Dim RibbonTemp As Object
CopyMemory RibbonTemp, lRibbonPointer, LenB(lRibbonPointer)
Set GetRibbon = RibbonTemp
Set RibbonTemp = Nothing
End Function
'@Description "Définit la procédure VBA qui doit être déclenchée lors du chargement du ruban."
Public Sub OnRibbonLoad(ribbon As IRibbonUI)
Set mUIRibbon = ribbon
mUIRibbon.ActivateTab "tab0"
' // Save the Ribbon Handle
sys_Settings.Range("sysvr_RibbonHandle").Value = CStr(ObjPtr(mUIRibbon))
End Sub
'@Description "Recovers the ribbon if lost."
Sub RefreshRibbon(Optional ByVal ControlID As String = vbNullString)
If mUIRibbon Is Nothing Then
#If VBA7 Then
Set mUIRibbon = GetRibbon(CLngPtr(sys_Settings.Range("sysvr_RibbonHandle").Value))
#Else
Set mUIRibbon = GetRibbon(CLng(sys_Settings.Range("sysvr_RibbonHandle").Value))
#End If
If ControlID = vbNullString Then
mUIRibbon.Invalidate
Else
mUIRibbon.InvalidateControl ControlID
End If
Else
If ControlID = vbNullString Then
mUIRibbon.Invalidate
Else
mUIRibbon.InvalidateControl ControlID
End If
End If
End Sub |
Partager