vba固然好用,但是随着vba代码版本的迭代,维护vba变得越来越恼火,尤其是把包含vba的xlsm宏文件分发给很多人使用的情况。
我推荐使用加载宏文件xla格式存储vba代码。将vba功能保存为独立的xla文件。需要使用的时候,双击运行一下。就能在excel的菜单来看到对应的菜单和按钮。效果如下:
后期我想修改或者迭代,只需要修改这个独立的加载宏文件。其他人只需要运行我最新的这个加载宏文件即可。以前的excel还是独立的文档,互不影响。
增添加菜单的代码,可以参考大模型提供的vba代码:
Option Explicit
Private Sub Workbook_Open()
Dim objPopUp As CommandBarPopup
Dim objBtn As CommandBarButton
' 删除已存在的相同自定义菜单
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("MyFunction").Delete
On Error GoTo 0
' 创建一个新的弹出式菜单
Set objPopUp = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
objPopUp.Caption = "&MyFunction"
' 添加菜单项
Set objBtn = objPopUp.Controls.Add(Type:=msoControlButton)
With objBtn
.Caption = "Formula Entry"
.OnAction = "Cbm_Active_Formula"
.Style = msoButtonCaption
End With
' 继续添加其他菜单项...
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' 工作簿关闭前删除自定义菜单
With Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
.Controls("&MyFunction").Delete
On Error GoTo 0
End With
End Sub
上述代码主要是有两个动作:
1、在打开excel文件的时候添加自定义菜单
2、在关闭excel的时候,删除自定义菜单