Ciao a tutti.
Come al solito premetto che non ci capisco nulla e vado per tentativi ed errori. So che non è un buon metodo ma tant'è, di (tante) necessità virtù (poche).
Sto impazzendo con la creazione di un ribbon personalizzato. Premesso che sono riuscito a crearlo, ho bisogno che l'utente che usa il db veda lo stesso ribbon, perché quando dovrà utilizzarlo, tutte le schede "standard" non serviranno.
Ora, passaggi effettuati:
- 1) Creato il ribbon, che contiene diversi gruppi e pulsanti che aprono maschere, lanciano macro o stampano report;
2) Ribbon visibile sulla mia macchina (ovviamente)
3) Provato ad usare sia la tabella USysRibbons che una tabella "Ribbons" personalizzata, in entrambi i casi non cambia nulla;
4) Nella tabella, inserito il seguente XML:
<mso:cmd app="Access" dt="0" />
<mso:customUI xmlns:x2="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:x1="PDFMaker.OfficeAddin" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
<mso:ribbon>
<mso:qat>
<mso:sharedControls>
<mso:control idQ="mso:FileNewDatabase" visible="false"/>
<mso:control idQ="mso:FileOpenDatabase" visible="false"/>
<mso:control idQ="mso:FileSave" visible="true"/>
<mso:control idQ="mso:FileSendAsAttachment" visible="false"/>
<mso:control idQ="mso:FilePrintPreview" visible="false" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:SpellingAccess" visible="false" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:Undo" visible="true" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:Redo" visible="true" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:ViewsModeMenu" visible="false" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:DataRefreshAll" visible="false" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:Synchronize" visible="false" insertBeforeQ="mso:FilePrintQuick"/>
<mso:control idQ="mso:FilePrintQuick" visible="true"/>
</mso:sharedControls>
</mso:qat>
<mso:tabs>
<mso:tab idQ="mso:TabHomeAccess" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabCreate" visible="false" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabExternalData" visible="false" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabDatabaseTools" visible="false" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabSourceControl" visible="false" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabAddIns" visible="false" insertBeforeQ="mso:TabPrintPreviewAccess"/>
<mso:tab idQ="mso:TabPrintPreviewAccess" visible="false"/>
<mso:tab idQ="x1:tab1" visible="false"/>
<mso:tab id="mso_c2.5D85E34" label="Gestione attività MERULLA" insertAfterQ="x1:tab1">
<mso:group id="mso_c1.10C1375" label="Anagrafiche" autoScale="true">
<mso:button idQ="x2:GestCollaboratori_0_10D3631" label="Collaboratori" imageMso="Head" onAction="GestCollaboratori" visible="true"/>
<mso:button idQ="x2:GestZone_1_10D3631" label="Gestione Zone" imageMso="PictureReflectionGalleryItem" onAction="GestZone" visible="true"/>
<mso:button idQ="x2:LanciaGestisciPuntiDistrib_0_7830B2" label="Gestione punti di distribuzione" imageMso="Pushpin" onAction="LanciaGestisciPuntiDistrib" visible="true"/>
</mso:group>
<mso:group id="mso_c3.5D999FC" label="Gestione Contratti" imageMso="Info" autoScale="true">
<mso:button idQ="x2:NuovoContratto_0_6765552" label="Nuovo Contratto" imageMso="ViewFullScreenView" onAction="NuovoContratto" visible="true"/>
<mso:button idQ="x2:CaricoMateriali_0_10B3132" label="Carico materiali" imageMso="TableSelect" onAction="CaricoMateriali" visible="true"/>
<mso:button idQ="x2:AssegnaZone_0_16089C13" label="Assegnazione zone" imageMso="Calculator" onAction="AssegnaZone" visible="true"/>
<mso:button idQ="x2:ApriElencoContratti_0_E08894" label="Elenco contratti attivi" imageMso="FrameCreateBelow" onAction="ApriElencoContratti" visible="true"/>
<mso:button idQ="x2:ApriSelContratto_0_5F0A487" label="Modifica contratto" imageMso="WindowsCascade" onAction="ApriSelContratto" visible="true"/>
<mso:button idQ="x2:RicercaContratto_0_5F483CE" label="Ricerca contratto" imageMso="ZoomPrintPreviewExcel" onAction="RicercaContratto" visible="true"/>
</mso:group>
<mso:group id="mso_c6.5D9EA6C" label="Pianificazione" imageMso="StartAfterPrevious" autoScale="true">
<mso:button idQ="x2:PlanningAffissione_0_5FB336D" label="Affissione locandine" imageMso="BlackAndWhiteInverseGrayscale" onAction="PlanningAffissione" visible="true"/>
<mso:button idQ="x2:PlanningVolantinaggio_0_6A6C91B" label="Volantinaggio" imageMso="BlackAndWhiteAutomatic" onAction="PlanningVolantinaggio" visible="true"/>
<mso:button idQ="x2:PlanningCassettaggio_1_5F9363B" label="Cassettaggio" imageMso="BlackAndWhiteBlackWithGrayscaleFill" onAction="PlanningCassettaggio" visible="true"/>
</mso:group>
<mso:group id="mso_c3.85E3EB" label="Stampe" imageMso="FilePrint" autoScale="true">
<mso:button idQ="x2:StampaElencoClienti_0_D6C584" label="Elenco Clienti" imageMso="ShapesDuplicate" onAction="StampaElencoClienti" visible="true"/>
<mso:button idQ="x2:StampaSchedeCollaboratori_1_8BF0E5" label="Schede Collaboratori" imageMso="WindowsCascade" onAction="StampaSchedeCollaboratori" visible="true"/>
<mso:button idQ="x2:StampaContratto_2_8BF0E5" label="Scheda Contratto" imageMso="CreateReportBlankReport" onAction="StampaContratto" visible="true"/>
<mso:button idQ="x2:StampaPianificazioneContratto_3_8BF0E5" label="Pianificazione contratto" imageMso="OutlineSubtotals" onAction="StampaPianificazioneContratto" visible="true"/>
</mso:group>
</mso:tab>
</mso:tabs>
</mso:ribbon>
</mso:customUI>
- 5) Creata una maschera "Start" che si apre e si chiude all'avvio del DB, perché non sapevo come far aprire la ribbon personalizzata; la maschera, sull'evento "OnLoad", contiene il seguente codice:
Private Sub Form_Load()
LoadRibbons
DoCmd.Close acForm, "Start", acSaveNo
End Sub
______________________________________________________________
Function LoadRibbons()
Dim db As DAO.Database
Set db = Application.CurrentDb
Dim PrendiXMLST As String
Dim Campo1 As String, Campo2
PrendiXMLST = "Select * from [Ribbons]"
Set rs = CurrentDb.OpenRecordset(PrendiXMLST)
Campo1 = rs.Fields("RibbonName").Value
Campo2 = rs.Fields("RibbonXML").Value
Application.LoadCustomUI Campo1, Campo2
rs.Close
Set rs = Nothing
End Function
- 6) Provato con il debug passo passo, Access esegue tutte le istruzioni alla lettera senza dare errori.
Ora, il problema è il seguente: quando passo il db all'utente che deve fare i test, non solo non succede nulla (ossia non si vede la ribbon personalizzata) ma, quando si va sulle opzioni del db, nella scheda "Database corrente", "Nome barra multifunzione", APPARE il nome della barra personalizzata. Se tuttavia la si seleziona, si chiude e si riapre il DB, NON SUCCEDE NULLA! La ribbon non appare e i pulsanti non sono visibili.
...Che manca? Forse è sbagliato l'XML?