Newsgroup: it.comp.appl.access
Titolo: Ribbon, proggetto ADP  e Access Runtime

Salve a tutti,
Ho sviluppato una applicazione in Access 2010 connesso a SQL Server
Express 2008 R2 (progetto ADP) e lo devo distribuire con il Runtime di
Access 2010.
Non ho esperienza con i Ribbon e non sono riuscito a trovare un modo
per poter crearmi un mia semplice Scheda e relativi pulsanti nella
barra multifunzione in modo tale che questa venga aperta anche dal
RunTime di Access.
Avendo letto che l'XML dei Ribbon può (o forse deve, in caso di Access
Runtime?) essere inserito nel campo di una tabella di sistema
(discorso che però non vale per i progetti ADP), esiste un modo
personalizzare i Ribbon in questi casi?
 
Thanks!

La soluzione è riportata in seguito.
Occorre creare una macro di nome Autoexec (Access la avvia automaticamente all'apertura) che richiami una Sub con questo codice:
 
Public Function fncLoadRibbonXml()
Dim f As Long
Dim strText As String
Dim strOut As String
 
f = FreeFile
Open CurrentProject.path & "\CustomRibbon.xml" For Input As f
 
Do While Not EOF(f)
   Line Input #f, strText
   strOut = strOut & strText & vbCrLf
Loop
 
Application.LoadCustomUI "CustomRibbon", strOut
strOut = ""
strText = ""
f = FreeFile
 
End Function
dove il file .xml contiene le caratteristiche del Ribbon.
 
In questo caso la personalizzazione del Ribbon risiede nel file esterno Custom.xml
Un esempio di file è il seguente:
 
<customUI xmlns="
http://schemas.microsoft.com/office/2006/01/customui
">
 
    <ribbon startFromScratch="true">
           <tabs>
                     <tab id="MyReport" label="Everblue">
			      <group id="Connection" label = "Parametri">
					<button id="OpenDataLink" imageMso="ServerConnection" size="large" 
						label="Connessione" onAction="OpenDataLinkForm" screentip="Imposta connessione a DB"/>
			      </group>
			      <group id="Gestione" label = "Catalogo prodotti">
					<button id="FormInserimento" imageMso="ActionInsert" size="large" 
						label="Inserisci o modifica prodotti a catalogo" onAction="InserisciModificaForm" screentip="Inserisci o modifica"/>
					<button id="FormRicerca" imageMso="FindNext" size="large" 
						label="Ricerca prodotti a catalogo" onAction="RicercaForm" screentip="Ricerca prodotti"/>
			      </group>
                              <group idMso="GroupZoom" />
                              <group id="Daten" keytip="d" label="Esportazione">
                                       <button idMso="ExportExcel"  size="large"/>
                                       <button idMso="PublishToPdfOrEdoc"  size="large"/>
                                       <button id="SendAsAttachment" 
                                                       imageMso="FileSendAsAttachment" 
                                                       size="large"
                                                       label="E-Mail"
                                                       onAction="SendEmailAttachment"
                                                       screentip="Invia per email"
                                         />
                             </group>
                            <group id="Exit" keytip="x">
                                     <button idMso="MasterViewClose" keytip="x" size="large"/>
                                     <button idMso="PrintPreviewClose" keytip="x" size="large"/>
                            </group>
 
                    </tab>
            </tabs>
    </ribbon>
</customUI>
 
Attenzione a 2 cose:
 
1 - Nelle opzioni -> database corrente - nome barra multifunzione - occorre riportare il nome assegnato nella riga di codice "Application.LoadCustomUI "CustomRibbon", strOut", quindi CustomRibbon.
Questa operazione va fatta con Access completo, ma rimane come opzione anche per la distribuzione Runtime.
 
2 - Alcune funzionalità non sono "esposte" in Access Runtime, quindi vanno riprodotte richiamando una funzione scritta nel codice: ne sono un esempio nel XML sopra tutti i tag in cui è riportata l'impostazione onAction="miaFunzione"
Significa che esiste una public "miaFunzione" in un modulo che esegue l'operazione desiderata (es. invia report per email, apri finestra di connessione a SqlServer)
 
In conclusione è possibile personalizzare i Ribbon anche per progetti ADP destinati a girare in ambiente Access RunTime.
 
Ulteriori informazioni sulla personalizzazione dei Ribbon sono disponibili qui:
http://office.microsoft.com/en-us/access-help/customize-the-ribbon-HA010211415.aspx