Sou um amante das ribbons, e estava avesso a um arquivo para cada versão do MS Access para poder usá-las corretamente. Resolvi criar uma estrutura única que mistura todas as marcas que podem variar do Access 2007 ao 365 e então fiz um mapeamento, conforme abaixo. Isso em um único local e uma função que carrega a ribbon adequadamente me poupam o risco de atualizar um arquivo sim e outro não, ou mesmo a surpresa de erros de interface ao acessar a backstage. Espero que sirva para mais alguém.

ID | Versões | Runtime | Linha |
1 | 2007 | INDEPENDE | <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> |
2 | 2010-2013-2016-2019-2021-365 | INDEPENDE | <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> |
3 | TODAS | INDEPENDE | <commands> |
4 | 2007 | DESCONSIDERA | <command idMso="ApplicationOptionsDialog" enabled="false"/> |
5 | 2007 | INDEPENDE | <command idMso="FileExit" enabled="false"/> |
6 | TODAS | INDEPENDE | <command idMso="Help" enabled="false"/> |
7 | TODAS | INDEPENDE | </commands> |
8 | TODAS | INDEPENDE | <ribbon startFromScratch="true"> |
9 | 2007 | INDEPENDE | <officeMenu> |
10 | 2007 | INDEPENDE | <button idMso="FileNewDatabase" visible="false"/> |
11 | 2007 | INDEPENDE | <button idMso="FileOpenDatabase" visible="false"/> |
12 | 2007 | INDEPENDE | <splitButton idMso="FileSaveAsMenuAccess" visible="false"/> |
13 | 2007 | INDEPENDE | <button idMso="FileCloseDatabase" visible="false"/> |
14 | 2007 | INDEPENDE | </officeMenu> |
15 | TODAS | INDEPENDE | </ribbon> |
16 | 2010-2013-2016-2019-2021-365 | INDEPENDE | <backstage> |
17 | 2010-2013-2016-2019-2021-365 | DESCONSIDERA | <tab idMso="TabInfo" visible="false"/> |
18 | 2010-2013-2016-2019-2021-365 | DESCONSIDERA | <tab idMso="TabRecent" visible="false"/> |
19 | 2010-2013-2016-2019-2021-365 | DESCONSIDERA | <button idMso="FileSave" visible="false"/> |
20 | 2010-2013-2016-2019-2021-365 | DESCONSIDERA | <tab idMso="TabHelp" visible="false"/> |
21 | 2010-2013-2016-2019-2021-365 | DESCONSIDERA | <button idMso="FileCloseDatabase" visible="false"/> |
22 | 2010-2013-2016-2019-2021-365 | INDEPENDE | <tab idMso="TabPrint" visible="false"/> |
23 | 2010-2013-2016-2019-2021-365 | INDEPENDE | <button idMso="ApplicationOptionsDialog" visible="false"/> |
24 | 2013-2016-2019-2021-365 | DESCONSIDERA | <tab idMso="TabOfficeStart" visible="false"/> |
25 | 2013-2016-2019-2021-365 | DESCONSIDERA | <tab idMso="TabSave" visible="false"/> |
26 | 2013-2016-2019-2021-365 | SOMENTE | <button idMso="FileExit" visible="false"/> |
27 | 2019-2021-365 | INDEPENDE | <tab idMso="TabOfficeFeedback" visible="false"/> |
28 | 2010 | DESCONSIDERA | <button idMso="SaveObjectAs" visible="false"/> |
29 | 2010 | DESCONSIDERA | <button idMso="FileSaveAsCurrentFileFormat" visible="false"/> |
30 | 2010 | DESCONSIDERA | <button idMso="FileOpen" visible="false"/> |
31 | 2010 | DESCONSIDERA | <tab idMso="TabNew" visible="false"/> |
32 | 2010 | DESCONSIDERA | <tab idMso="TabShare" visible="false"/> |
33 | 2010 | INDEPENDE | <button idMso="FileExit" visible="false"/> |
34 | 2021-365 | DESCONSIDERA | <tab idMso="PlaceTabHome" visible="false"/> |
35 | 2010-2013-2016-2019-2021-365 | INDEPENDE | </backstage> |
36 | TODAS | INDEPENDE | </customUI> |
- Código:
Public Function fncCarregaRibbon()
' ----------------------------------------------------------------
' Propósito : Carregar a Ribbon em tempo de execução
' ----------------------------------------------------------------
On Error GoTo trataErro
Dim objRs As DAO.Recordset
Dim strXML As String
Set objRs = CurrentDb.OpenRecordset("select cpLinha " & _
"from tblRibbon " & _
"where (cpVersoes = ""TODAS"" or instr( cpVersoes," & fncVersaoAccess & ") > 0) and cpRuntime <> " & IIf(fncIsRuntime, """DESCONSIDERA"" ", """SOMENTE"" ") & _
"order by cpId;", dbOpenForwardOnly, dbReadOnly)
While Not objRs.EOF
strXML = strXML & objRs!cpLinha.Value
Call objRs.MoveNext
Wend
Call Application.LoadCustomUI("rbTotal", strXML)
sair:
On Error Resume Next
Call objRs.Close
Set objRs = Nothing
Exit Function
trataErro:
Resume sair
End Function
Última edição por DamascenoJr. em Qui 21 Abr - 19:17, editado 2 vez(es) (Motivo da edição : Previsão da versão 2021)