使用 VBA 拦截或禁用 Excel 功能区中的函数

问题描述 投票:0回答:1

我正在寻找一种方法来禁用附图中以红色突出显示的菜单功能。

菜单功能
1

我尝试了以下代码,但我不确定 ID:

代码1

Dim Ctrl As CommandBarPopup
Set Ctrl = Application.CommandBars.FindControl(ID:=XXXX) 
If Ctrl Is Nothing Then Else Ctrl.Enabled = False

代码2

CommandBars(1).Controls("SheetView").Visible = False

我尝试使用以下代码和名为“BuiltInControlsScanner”的工具来识别 ID,但没有成功找到 ID 或函数名称。他们似乎没有出现。

Dim i As Integer
Dim ii As Integer
Dim iii As Integer
Dim iiii As Integer
Dim x As Integer
Dim CB As CommandBar
Dim Menu As CommandBarControl
Dim SubMenu As CommandBarControl
Dim SubMenu2 As CommandBarControl

On Error Resume Next

x = 1

For Each CB In CommandBars
    i = 1
    ii = 1
    iii = 1
    iiii = 1
    For Each Menu In CB.Controls
        ii = ii + 1
        iii = 1
        iiii = 1
        For Each SubMenu In Menu.Controls
            iii = iii + 1
            iiii = 1
            For Each SubMenu2 In sebmenu.Controls
                Cells(x, 8) = CB.Name
                Cells(x, 9) = Menu.Caption
                Cells(x, 10) = SubMenu.Caption
                Cells(x, 11) = SubMenu2.Caption
                Cells(x, 12) = i
                Cells(x, 13) = ii
                Cells(x, 14) = iii
                Cells(x, 15) = iiii
                x = x + 1
                iiii = iiii + 1
            Next SubMenu2
        Next SubMenu
    Next Menu
Next CB

或者,如果视图被切换,我想拦截切换并转换到为用户专门定制的视图。我读过,通过编辑 XML 文件可能可以实现这一点,但我发现的说明适用于在功能区中创建自定义按钮,而不是编辑预设按钮。

目的是防止 Excel 文件中的用户在“工作表视图”之间切换。

本质上,我需要一种在视图切换时触发的“Change-Event”,触发事件是图像中红色突出显示的函数。或者,最佳解决方案是禁用该功能或使视图切换无法进行。

excel vba events ribbonx
1个回答
0
投票

您可以使用Excel中的设置窗口找到内置控件ID,只需在列表中找到所需的控件并将鼠标悬停在弹出窗口中,如图所示:

ribbon isMso values

听起来您正在尝试从另一个解决方案更改自定义 UI。无法在来自其他加载项的 Office 应用程序中自定义自定义 UI。相反,您需要联系外接程序开发人员以获取可在您的代码中使用的任何公共 API。例如,请参阅演练:从 VBA 调用 VSTO 外接程序中的代码了解更多信息。

仅供参考,命令栏已弃用,不应再使用。必须改用 Fluent UI(又名 Ribbon UI)。保留命令栏是出于兼容性目的,例如以编程方式运行内置控件。

© www.soinside.com 2019 - 2024. All rights reserved.