FAQ (Access 2007/2010/2013)
Nur Access 2010/2013 - FAQ

 

1

Öffen Sie den Dialog "Symbolleiste für den Schnellzugriff anpassen" .Sie dieses über den "Office Button" / Button "Access Optionen" / "Anpassen".


idMSO eines Ribbon ControlsIn dem Dialog wählen Sie unter "Befehle auswählen" den gewünschten Bereich und fahren mit der Maus über den gewünschten Befehl. In dem Tooltip der darufhin erscheint sehen Sie in Klammern die entsprechende idMSO für den Befehl und für das zugeordnete Icon.

 

Icon InfoIn der 3. Beispieldatenbank finden Sie in Tab "IconGallerie" in der Group "Office Icons" alle möglichen "Icons" die verwendet werden können. Mit einem Klick auf ein gewünschtes Icon aus dieser Group öffnet sich ein Formular in dem Sie die "imageMso" herauskopieren können.

 

In der Linkliste finden sie auch einen Link auf die ControlID Liste. In dieser finden Sie alle idMso von Office 2007.



#​CMSimple hide#

2

Application.CommandBars.ExecuteMso ("idMSO")

Beispiel: Schließen der aktuellen Datenbank ("Office Button" / "Datenbank schließen")

Application.CommandBars.ExecuteMso ("FileCloseDatabase")


#​CMSimple hide#

3

Setzen Sie einen Haken unter (Access 2007) "Office Button" / Button "Access-Optionen" / "Erweitert" / "Allgemein" / "Fehler in Benutzeroberflächen in Add-Ins anzeigen"

Für Access 2010 und Access 2013: Tab "Datei" / Button "Optionen" / "Clienteinstellungen" / "Allgemein" / "Fehler in Benutzeroberflächen in Add-Ins anzeigen"


Mit dieser Option werden Fehler welche durch das Ribbon XML File ausgelößt werden angezeigt.

Fehler aus Ribbon XML Datei
(Zum vergrößern bitte anklicken)


#​CMSimple hide#

4

Benutzerdefinierte Ribbons in A2007 funktionieren nur mit einen Verweis auf die "Microsoft Office 12.0 Object Library",

für Office 2010 müssen Sie "Microsoft Office 14.0 Object Library" verwenden,

für Office 2013 müssen Sie "Microsoft Office 15.0 Object Library" verwenden

und ab Office 2016 und höher die "Microsoft Office 16.0 Object Library" verwenden.

 

Um diesen Verweis zu setzen öffnen Sie ein beliebiges Modul. Menüleiste "Extras" / "Verweise", setzten Sie einen Haken bei der "Microsoft Office 1x.0 Objekt Library". Bestätigen Sie den Verweisdialog mit "OK".

Verweise für eigene Ribbons
(Zum vergrößern bitte anklicken)


#​CMSimple hide#

5
6

Halten Sie beim Start der Datenbank die [Shift]-Taste gedrückt.

Ribbon nicht ladenWollen Sie in der aktuellen Datenbank permanent das laden eines Ribbons verhindern so löschen Sie den Ribbonnamen aus "Office Button" / Button "Access-Optionen" / "Aktuelle Datenbank" / "Multifunktionsleisten- und Symbolleistenoptionen" / "Name der Multifunktionsleiste".

#​CMSimple hide#

7
Entfernen Sie den Haken in der Datenbank unter:

A2003: "Extras" / "Start" / "Eingebaute Symbolleisten zulassen"

unter "Menüleiste" wählen Sie Ihre Menüleiste aus.

A2007: "Office Button" / Button "Access-Optionen" / "Aktuelle Datenbank" / "Multifunktionsleisten- und Symbolleistenoptionen" / "Integrierte Symbolleisten zulassen"

unter "Menüleiste" wählen Sie Ihre Menüleiste aus.
 

 

 

Wenn Sie die Datenbank so öffnen erscheinen keine Ribbons und nur die eigene Menüleiste:


#​CMSimple hide#

8

Legen Sie in der Datenbank eine "USysRibbon" Tabelle an (Anleitung) mit folgendem Ribbon XML:








<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <ribbon startFromScratch="false">
      <tabs>
        <tab idMso="TabHomeAccess" visible="false" />
        <tab idMso="TabAddIns" label="My Ribbon Tab" />
      </tabs>
   </ribbon>
</customUI>

 

 

Hinweis: Der Gruppennamen "Benutzerdefinierte Symbolleisten" kann nicht umbenannt werden :-(

#​CMSimple hide#

9

Nein. Die Access Ribbons können nicht bzw. nur sehr begrenzt manipuliert werden.

 

Sie können aber in einem Access Tab eine eigene Gruppe erstellen, in dieser können Sie Ihre eigenen Buttons / Controls erstellen.

 

 

Legen Sie in der Datenbank eine "USysRibbon" Tabelle an (Anleitung) mit folgendem Ribbon XML:



<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <ribbon startFromScratch="false">
      <tabs>
        <tab idMso="TabHomeAccess">
           <group id="myGroup" label="My Group" insertBeforeMso="GroupViews">
              <button id="myButton" label="My Button" imageMso="HappyFace"/>
           </group>       
         </tab>
      </tabs>
   </ribbon>
</customUI>

Für die Office Ribbon Anpassung hat Patrick Schmid ein AddIn geschrieben. Informationen und Erwerb unter: http://pschmid.net/office2007/ribboncustomizer/index.php

#​CMSimple hide#

10

Nein. Bisher ist mir kein Weg bekannt wie dieser Text in eigenen Screentips / Supertips zu entfernen ist.

Über die Optionen können die Screentips ganz ausgeschaltet werden.

Link zu Microsoft

#​CMSimple hide#

11

Speicherns Sie die gewünschten Bilder binär in einer Tabelle ab und laden diese mit den Callback "getImage" in das Ribbon. Sie finden dazu in den Downloads  die Beispieldatenbank IconInRibbon.

#​CMSimple hide#

12

Es reicht in der Regel nicht die Datenbank neu zu starten. Um die Schnellstartleiste  angezeigt zu bekommen müssen Sie Access beenden und anschließend neu starten. Nun können Sie die Datenbank laden und Ihre Schnellstartleiste wird angezeigt.

Legen Sie in der Datenbank ein "Dummy" Formular an, welches Sie Bei "OnRibbonLoad" starten und gleich wieder schließen.

 

Sub OnRibbonLoad(ribbon As IRibbonUI)
    ' Callbackname in XML File "onLoad"
    DoCmd.OpenForm "frmDummy"
    DoCmd.Close acForm, "frmDummy"
End Sub


Ihr Ribbon XML muss diese Funktion aufrufen:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
  onLoad="OnRibbonLoad">
</customUI> 


Starten Sie Ihre Datenbank nicht mit einem Doppelklick aus dem Explorer.

Sie finden in den Downloads dazu eine Beispiel Datenbank.

#​CMSimple hide#

 

13

Nein.

Sie können aber den Button deaktivieren. Legen Sie dazu in Ihrem XML folgende Commands Zeilen wie im Beispiel gezeigt hinzu:

Beispiel XML:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- An dieser Stelle einfügen-->
  <commands>
    <command idMso="Help" enabled="false"/>
  </commands>
   
<!-- Hier folgt Ihr weiterer XML Code -->
   <ribbon startFromScratch="false">
      <tabs>
        <tab idMso="TabHomeAccess">
           <group id="myGroup" label="My Group" insertBeforeMso="GroupViews">
              <button id="myButton" label="My Button" imageMso="HappyFace"/>
           </group>       
        <tab>
      </tabs>
   </ribbon>
</customUI>

 

#​CMSimple hide#

 

14

Ja

Verwenden Sie dazu folgenden Starttag:
<!--
und folgenden Endtag:
-->

Beispiel XML: 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Das ist ein Kommentar -->
   <ribbon startFromScratch="false">
      <tabs>
        <tab idMso="TabHomeAccess">
           <!-- Das ist ein weiterer Kommentar -->
           <group id="myGroup" label="My Group" insertBeforeMso="GroupViews">
              <button id="myButton" label="My Button" imageMso="HappyFace"/>
           </group>       
        <tab>
      </tabs>
   </ribbon>
</customUI>

 

#​CMSimple hide#

 

15

Ja.

Legen Sie dazu folgendes Ribbon XML an:

Beispiel XML: 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <commands>
     <command idMso= "ApplicationOptionsDialog" onAction="OnActionOptionsButton"/>
   </commands>
   <ribbon startFromScratch="false">
           <!-- Ihr weiterer Ribbon  XML Code -->
   </ribbon>
</customUI>


Legen sie folgenden Callback Funktion in einem Standardmodul an:

Public Sub OnActionOptionsButton(control As IRibbonControl, ByRef cancelDefault)
    DoCmd.OpenForm "frmIhrFormular", , , , , acDialog
End Sub 

Siehe auch Beipiel Datenbank "Access-Optionen"

#​CMSimple hide#

 

16

Legen Sie dazu folgendes Ribbon XML in einer USysRibbons Tabelle an:

Ribbon XML: 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <ribbon startFromScratch="true">
   </ribbon>
</customUI>


#​CMSimple hide#

 

17
18

Mit folgendem Code kann das Ribbon komplett (incl. Office Menü) ausgeblendet werden:

  DoCmd.ShowToolbar "Ribbon", acToolbarNo 

Einblenden mit:

  DoCmd.ShowToolbar "Ribbon", acToolbarYes

#​CMSimple hide#

 


19

Mit folgendem Code stellen Sie den Status des Ribbons fest:

Function RibbonState() As Long
'Status des Ribbon; Result: 0=normal, -1=minimiert
  
    RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
  
End Function


Vielen Dank dafür an Sascha Trowitzsch:http://www.mosstools.de/

Die Informationen über den Ribbon State sind auch in der Registry zu finden:

[HKEY_CURRENT_USER]\Software\Microsoft\Office\1x.0\Common\Toolbars\Access

Value Name:     QuickAccessToolbarStyle
Value Data:      0      (Ribbon = normal)
Value Data:      4      (Ribbon = minimiert)

In den Downloads finden Sie eine Beispiel Datenbank welche demonstriert, wie Sie die Anzeigegröße des Ribbons per Code festlegen können.  

In Access 2010 können Sie den Ribbon mittels

   CommandBars.ExecuteMso "MinimizeRibbon"

minimieren bzw. normal anzeigen

#​CMSimple hide#

 

20

Geben Sie im Direktfenster (STRG + G) folgenden Code ein

CommandBars("MeineMenüleiste").Delete

oder rufen Sie das Kontextmenü mit einem rechten Mausklick auf die zu löschende Symbolleiste auf und wählen Sie den Eintrag: "Benutzerdefinierte Symbolleiste löschen"

 

#​CMSimple hide#

 

21

Kann Late Binding verwendet werden um auf den Office Verweis verzichten zu können?

 

Für Access 2007:



Für Access 2010:

  • Ja, unter Access 2010 können Sie auf Late Binding umstellen und den Office Verweis aus der Datenbank entfernen.

1. Ersetzen Sie in Ihren Modulen alle vorkommen von:

IRibbonUI und IRibbonControl

durch

Object

2. Löschen Sie den Verweis auf die "Microsoft Office 14.0 Object Library"in Ihrer Datenbank.

 

Hinweis: IntelliSense steht Ihnen für diese Objekte nicht mehr zur Verfügung.

#​CMSimple hide#

 

22

Kann ich in einer Datenbank für beide Access Versionen (2007 und 2010) unterschiedliche Application Ribbons verwenden?

 

Ja.

Erstellen Sie zunächst in der USysRibbons Tabelle die jeweils benötigten Ribbon XMLs.

Stellen Sie in den Optionen unter "Name der Multifunktionsleiste" für A2007 bzw. "Name des Menübandes" für A2010 einen Namen welcher nicht in der USysRibbonstabelle verwendnung findet  ein, z.B. "DBRibbon".

Fügen Sie folgenden Code in ein Standardmodul ein:

Option Compare Database
 
Public Function fnc_LoadRibbon()
 
Dim strProcName As String
strProcName = "fnc_LoadRibbon"
On Error GoTo fnc_LoadRibbon_Err
 
  Application.LoadCustomUI "DBRibbon", fnc_GetRibbon(Left(Application.Version, 2))
 
fnc_LoadRibbon_Exit:
    Exit Function
 
fnc_LoadRibbon_Err:
    Select Case Err
        'Case IhreFehlernummer
            'Resume fnc_LoadRibbon_Exit
        Case Else
            MsgBox "Es ist ein Fehler aufgetreten." & vbCrLf & vbCrLf & _
            "In Function:" & vbTab & strProcName & vbCrLf & _
            "Fehlernummer: " & vbTab & Err.Number & vbCrLf & _
            "Beschreibung: " & vbTab & Err.description, vbCritical, _
            "Fehler in " & Chr$(34) & strProcName & Chr$(34)
            Resume fnc_LoadRibbon_Exit
    End Select
 
End Function
 
Function fnc_GetRibbon(lngVersion As Long) As String
' ************************************************************
' Erstellt von     : avenius
' Parameter        :
' Rückgabe         : String
' Erstellungsdatum : Mittwoch, 1 Aug 2012
' Bemerkungen      :
' Änderungen       :
'
' **************** Created by IDBE Tools 2010 ****************
 
Dim strProcName As String
strProcName = "fnc_GetRibbon"
On Error GoTo fnc_GetRibbon_Err
 
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
 
Set dbs = CurrentDb()
 
Select Case lngVersion
    Case 12
        ' Read A2007 Ribbon
        Set rst = dbs.OpenRecordset("SELECT * FROM USysRibbons WHERE RibbonName='A2007'", dbOpenDynaset) 
    Case 14
        ' Read A2010 Ribbon
        Set rst = dbs.OpenRecordset("SELECT * FROM USysRibbons WHERE RibbonName='A2010'", dbOpenDynaset) 
    Case Else
        ' Read default Ribbon
        Set rst = dbs.OpenRecordset("SELECT * FROM USysRibbons WHERE RibbonName='Default'", dbOpenDynaset)
End Select
 
rst.MoveFirst
fnc_GetRibbon = rst.Fields("RibbonXml")
 
fnc_GetRibbon_Exit:
    rst.Close
    Set rst = Nothing
    Set dbs = Nothing
    Exit Function
 
fnc_GetRibbon_Err:
    Select Case Err
        'Case IhreFehlernummer
            'Resume fnc_GetRibbon_Exit
        Case Else
            MsgBox "Es ist ein Fehler aufgetreten." & vbCrLf & vbCrLf & _
            "In Function:" & vbTab & strProcName & vbCrLf & _
            "Fehlernummer: " & vbTab & Err.Number & vbCrLf & _
            "Beschreibung: " & vbTab & Err.description, vbCritical, _
            "Fehler in " & Chr$(34) & strProcName & Chr$(34)
            Resume fnc_GetRibbon_Exit
    End Select
 
End Function

 

Stellen Sie sicher das die Function "fnc_LoadRibbon" über ein Autoexec Makro aufgerufen wird.

Sie finden unter den Downloads ein Beispiel Datei zum herunterladen.

Danke an A. Kallal und Graham Mandeno für die Anregung.

 

#​CMSimple hide#