AW: Menüleiste Funktion deaktivieren
01.02.2024 08:54:46
Angelo
Herzlichen Dank für deinen Hinweis. Leider kann ich die Datei nicht hochladen, da vertrauliche Informationen enthalten sind. Allerdings habe ich dank deines bereitgestellten Links und ein wenig Recherche einige Erkenntnisse gewonnen:
Die Deaktivierung der Tabellenansicht per VBA ist von Office aus gesperrt.
Es scheint jedoch möglich zu sein, diese Funktionen mithilfe einer XML-Datei abzufangen.
Bedauerlicherweise gibt es nur begrenzte Informationen darüber, wie die XML-Datei angepasst werden muss und welche idMso dabei erforderlich ist.
Aktuell habe ich die XML-Datei folgendermaßen strukturiert (s. Bild und Code unten).
[url=https://ibb.co/QJwmYdY][img]https://i.ibb.co/QJwmYdY/2024-02-01-08-12-39-Office-Ribbon-X-Editor.jpg[/img][/url]
"" customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" ">"
"" ribbon ">"
"" tabs ">"
"" tab idMso="TabView" ">"
"" group idMso="GroupNamedSheetView" label="Sheet View" ">"
"" comboBox idMso="SheetViewComboBox" label="View:" onChange="Anwesenheit Sage 2024.xlsm!OnSheetViewComboBoxChange"/ ">"
"" button idMso="KeepTemporarySheetView" label="Keep Temporary View" onAction="Anwesenheit Sage 2024.xlsm!OnKeepTemporarySheetView"/ ">"
"" button idMso="ExitSheetView" label="Exit Sheet View" onAction="Anwesenheit Sage 2024.xlsm!OnExitSheetView"/ ">"
"" button idMso="NewSheetView" label="New Sheet View" onAction="Anwesenheit Sage 2024.xlsm!OnNewSheetView"/ ">
"" button idMso="SheetViewOptions" label="Sheet View Options" onAction="Anwesenheit Sage 2024.xlsm!OnSheetViewOptions"/ ">"
"" /group ">"
"" /tab ">"
"" /tabs ">"
"" /ribbon ">"
"" backstage onHide="Anwesenheit Sage 2024.xlsm!OnHide" onShow="Anwesenheit Sage 2024.xlsm!OnShow" ">"
"" !-- Backstage Ribbon XML -- ">"
"" /backstage ">"
"" /customUI ">"
Option Explicit
Public Sub OnSheetViewComboBoxChange(control As IRibbonControl, text As String)
MsgBox "Sheet View ComboBox geändert. Neue Auswahl: " & text, vbInformation, "Hinweis"
End Sub
Public Sub OnKeepTemporarySheetView(control As IRibbonControl)
MsgBox "Keep Temporary Sheet View gedrückt.", vbInformation, "Hinweis"
End Sub
Public Sub OnExitSheetView(control As IRibbonControl)
MsgBox "Exit Sheet View gedrückt.", vbInformation, "Hinweis"
End Sub
Public Sub OnNewSheetView(control As IRibbonControl)
MsgBox "New Sheet View gedrückt.", vbInformation, "Hinweis"
End Sub
Public Sub OnSheetViewOptions(control As IRibbonControl)
MsgBox "Sheet View Options gedrückt.", vbInformation, "Hinweis"
End Sub
Sub OnHide(control)
If ActiveWorkbook.Name > ThisWorkbook.Name Then Exit Sub
MsgBox "Dateimenü geschlossen.", 64, "Hinweis"
End Sub
Sub OnShow(control)
If ActiveWorkbook.Name > ThisWorkbook.Name Then Exit Sub
MsgBox "Dateimenü aufgerufen.", 64, "Hinweis"
End Sub
Der Abschnitt für das Abfangen des Dateimenüs funktioniert bereits.
Leider gestaltet sich das Abfangen anderer Funktionen als schwieriger.
In dem Bereich, wo momentan eine MsgBox erscheint, soll später die Überprüfung erfolgen, welche Tabellenansicht aktiv ist. Diese Funktionalität habe ich bereits, leider fehlt das auslöse Event.
Mein Ziel ist es, Benutzern, die die Datei in SharePoint öffnen, je nach ihrer Identität oder Rolle unterschiedliche Ansichten zuzuweisen. Dabei sollen bestimmte Daten je nach Ansicht ausgeblendet oder eingeschränkt werden, um die Vertraulichkeit zu gewährleisten.
Ich hoffe, dies verdeutlicht meine Herausforderung besser. Sollte etwas unklar sein, stehe ich gerne zur Verfügung und bin bereit, meine Fragestellung weiter zu präzisieren. Nochmals herzlichen Dank für deine Unterstützung; sie hat mich bereits erheblich vorangebracht.
Ich denke, ich bin auf dem richtigen Weg zur Lösung, dank deiner Hilfe.