Quando si utilizza un file XML dell'interfaccia utente personalizzato per aggiungere diverse schede personalizzate della barra multifunzione in Access, la scheda della barra multifunzione selezionata torna alla prima scheda personalizzata ogni volta che viene chiuso un modulo.È possibile impedire a MS Access di cambiare automaticamente la linguetta selezionata quando si utilizza un nastro personalizzato?
Carichiamo un nastro personalizzato da VBA. Ho creato an accdb that reproduces the problem. La cartella include anche un file XML che contiene la definizione del nastro. Deve essere nella stessa directory del file .accdb.
Il problema può facilmente essere dimostrata:
- aprire il database RibbonTest.accdb,
- interruttore Tab2 e aprire Form2 utilizzando il pulsante sul nastro e
- chiudere Form2.
Si noti che Tab1 è ora attivo.
Ovviamente, in questo piccolo esempio db questo problema sembra molto minore. Tuttavia, abbiamo un progetto molto grande con molte schede personalizzate, ciascuna contenente numerosi gruppi e pulsanti. I nostri utenti stanno trovando molto frustrante che continuino a perdere il loro posto sul nastro ogni volta che chiudono un modulo.
Abbiamo esaminato una soluzione alternativa in cui archiviamo la scheda selezionata in modo programmatico e la ripristiniamo quando pensiamo di aver bisogno. Tuttavia, si sta dimostrando difficile farlo in modo affidabile. (Non esiste un'API di Office per l'automazione del nastro in questo modo, ma this article helped.)
Qualcun altro ha riscontrato questo problema? Hai trovato un modo per impedire la modifica automatica della scheda?
Edit: Sembra che questo problema è stato introdotto con una correzione implementato in Office 2010 SP1 . (Scusa, nessun collegamento: non credo di poterne avere più di due.) Il problema non è presente nella versione RTM. L'elenco di correzioni per SP1 include questo: "L'accesso non si attiva o non restituisce l'utente alla scheda Nastro corretta per un oggetto di database precedentemente aperto quando l'utente torna a quell'oggetto." Sembra che abbiano provato a correggere l'uso della proprietà Form.RibbonName (che supporta i nastri contestuali), ma hanno interrotto il nastro predefinito nel processo.
Eccellente: contrassegnato come risposta anziché come soluzione alternativa. – Olly