gpt4 book ai didi

excel - Project 的 SetCustomUI for Excel 是否有替代方案?

转载 作者:行者123 更新时间:2023-12-02 21:58:06 25 4
gpt4 key购买 nike

我有一个 Excel 工作表,其中包含一堆普通的 VBA 宏。该文件不断更新并作为 Excel 加载项 (.xlam) 分发。到目前为止,我对它的工作原理感到非常满意。

现在我想添加一个功能区选项卡和运行其中一些宏的按钮。本来我很兴奋的发现this MSDN article ,但随后令人沮丧的是,Excel 中似乎不存在 SetCustomUI(仅限 Project),因此我无法简单地在 Workbook_Open 中使用它。其他SO问题证实了这一点,但没有给出替代方案。

我的要求:

  • 用户必须像现在一样能够访问宏 VBA 代码(加载项在 VBE 中显示为项目)。
  • 更新和重新分发加载项必须很容易。今天,我向他们发送了一个文件进行更新。
  • 我想要一个功能区选项卡,其中包含一些宏的按钮。

有什么想法吗?

最佳答案

这是我在 AddIn 文件上使用了一段时间的一些代码。我从别人那里继承了它,但它对我来说一直很有效。

它应该在 AddIns 功能区中创建一个新工具栏:

Screenshot of Add-In toolbar

我想我复制了所有相关代码。如果您有疑问或遇到任何问题,请告诉我。

Option Explicit
'This module contains functions and subroutines to create Add-in menus

Public Const MenuName As String = "Menu Name"
Public Const APPNAME As String = "&Menu Name"
Private Sub Credit_Inf()

MsgBox "Created by YOUR NAME"

End Sub

Private Sub Auto_Open()

Dim NewMenuItemMacro As String
Dim NewMenuItem As String
Dim XLCommandBar As Integer
Dim NewItem As CommandBarButton
Dim ToolsMenu As CommandBarPopup
Dim NewMenu As CommandBar

NewMenuItemMacro = MenuName
NewMenuItem = APPNAME & "..."
XLCommandBar = 1 'Worksheet Menu Bar


'Delete the current menu if it exists (just in case)
On Error Resume Next
CommandBars(MenuName).Delete
On Error GoTo 0
Set NewMenu = Application.CommandBars.Add(MenuName, msoBarTop)

' .....
NewMenu.Visible = True

' Create a popup control on the bar and set its caption.
Set ToolsMenu = NewMenu.Controls.Add(Type:=msoControlPopup)
ToolsMenu.Caption = "Who built this?"
ToolsMenu.BeginGroup = True
With ToolsMenu.Controls.Add(Type:=msoControlButton)
.OnAction = "Credit_Inf"
.Caption = "Find out who built this"
.FaceId = 99
.Style = msoButtonCaption
.BeginGroup = False
End With

'##Repeat ToolsMenu.Controls.Add, as necessary



End Sub


Private Sub Auto_Close()

'Delete the current menu if it exists (just in case)
On Error Resume Next
CommandBars(MenuName).Delete
On Error GoTo 0

End Sub

Private Sub EnableMenuItem(sItem As String, bEnable As Boolean)
On Error GoTo Err_EnableMenuItem

Dim NewItem As CommandBarButton
Dim NewMenu As CommandBar

Set NewMenu = Application.CommandBars(MenuName)

Set NewItem = NewMenu.FindControl(Tag:=sItem, recursive:=True)

NewItem.Enabled = bEnable

Err_EnableMenuItem:
Resume Next

End Sub
Public Function IsWorkbookOpen() As Boolean

IsWorkbookOpen = True

If Application.Workbooks.count = 0 Then
IsWorkbookOpen = False
End If

End Function

关于excel - Project 的 SetCustomUI for Excel 是否有替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com