通过VBA在Excel中添加菜单和菜单项按钮(Excel启动时候添加)

将以下代码保存到.xlam或.xla(Excel97-2003)文件。

在ThisWorkBook对象中,添加Workbook_Open事件,调用启动菜单过程。
Private Sub Workbook_Open()
    Call MenuSetup(True)
End Sub

'-----------------------------------------------
'在Excel中添加菜单和菜单项按钮(Excel启动时候添加)
'-----------------------------------------------
Public Function MenuSetup(blSetUp As Boolean)
    Dim myMenu As CommandBarPopup
    Dim mycontrol As CommandBarControl
    Dim i As Integer
    Dim sMenuItemName As String     '菜单项的名称
    Dim sMenuItemFunc As String     '菜单项的调用的函数名称
    Dim strM As String              '菜单名称
    Dim strMenuItem() As String     '菜单项名称

    On Error Resume Next

    '初始化菜单项
    ReDim strMenuItem(3, 2)    'VBA数组下界从1开始
    '菜单项1
    strMenuItem(1, 1) = "菜单项1"
    strMenuItem(1, 2) = "菜单1运行的过程名"
    '菜单项2
    strMenuItem(2, 1) = "菜单项2"
    strMenuItem(2, 2) = "菜单2运行的过程名"

    Application.ScreenUpdating = False

    '---添加菜单1
    strM = "EBS配套工具"
    Set myMenu = Application.CommandBars(1).Controls(strM)       '判断我的菜单是

否存在?
    If Err Then
        Err.Clear
        Set myMenu = Application.CommandBars(1).Controls.Add

(Type:=msoControlPopup, temporary:=True)
        myMenu.Caption = strM
    End If

    If blSetUp Then
            '---添加菜单项目1
            For i = 1 To UBound(strMenuItem)      '数组第一维的大小
                sMenuItemName = strMenuItem(i, 1)
                sMenuItemFunc = strMenuItem(i, 2)

                Set mycontrol = myMenu.Controls(sMenuItemName)   '判断子程序是否

存在
                If Err Then
                    Err.Clear
                    Set mycontrol = myMenu.Controls.Add(Type:=msoControlButton, 

temporary:=True) '在菜栏最后位置增加一个按钮
                    With mycontrol
                        .Caption = sMenuItemName                    '菜单项显示名

称
                        .OnAction = sMenuItemFunc                   '左键单击该菜

单项按钮便运行的过程
                        .Style = msoButtonCaption                   '只显示文字
                    End With
                End If
            Next
    Else
        Application.CommandBars(1).Controls(strT).Delete

    End If

    Application.ScreenUpdating = True
    If Err Then Err.Clear
End Function

Public Sub start_App()
 frmSetFileSheet.Show 0
End Sub

时间: 2024-10-24 04:43:39

通过VBA在Excel中添加菜单和菜单项按钮(Excel启动时候添加)的相关文章

[Powershell / VBA] 把excel中的表分离成独立的excel文件

This article also published in Eng @ http://www.cnblogs.com/LarryAtCNBlog/p/4441201.html 今天在两个地方看到了这样一个问题:把一个excel中的表复制出来另存为一个独立的excel文件.其中一个是cnblog,另一个想不起来了.想到自己将来也可能遇到这样的问题,于是用powershell做了一个脚本以备不时之需. Powershell 当然,首先要有一个excel文件包括了一堆表. 用脚本自动化excel最常

使用Sharepoint定时运行Excel中宏程序

需求:因为Excel中数据量很大,其中包含了几个宏程序从其他数据源读取数据,运行一次宏需要比较长的时间,为了不影响使用,要求每天半夜运行一次Excel中的宏(无参数),Excel存放在共盘上. 解决方案:Sharepoint上写了一个Timejob,Timejob每天去运行宏.写Timejob参考http://www.cnblogs.com/batter152/p/4705316.html 在运行时会碰到的问题ERROR – RETRIEVING THE COM CLASS FACTORY FO

Excel中的常用功能

Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域. Excel删除公式保留数据 1.简单举例一个简单的公式数据,第三列对第一列的操作,当然,我们日常会有更多的复制的公式,但是原理是一样的,如图. 2.我们选中第一行,然后往下拖进行复制,主要是为了后面操作,如图. 3.我们选中,然后点击右键,复制后,在原先的列上右键,粘贴,在粘贴的时候,选择性粘贴,选择数据值的属性粘贴,如图.这样就去除公式,只保留数据

如何在Excel中绘制流程图

流程图在我们的日常办公中运用的十分广泛,很多人刚接触绘制流程图的时候都说很难,是这样吗?在我们做流程图的时候有很多专业的流程图软件可以完成,但不定能做出自己想要的效果,选择一款合适的工具很重要,而不能盲目的选择,下面小编将教给大家两种绘制流程图的方法 一,在Excel中绘制流程图 1.打开Excel,点击上方栏目中[插入]选择[形状],在弹出的下拉框中将会看到有很多的形状 2.在基本图形下方我们能看到有很多的图形,这些在绘制的过程汇总都是可以使用的,需要什么图形可用鼠标点击图形,在右边出现的画布

SqlServer表数据与excel中数据的互相复制

一.SqlServer表数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键,复制(也可以点击连同标题复制),复制到记事本中(不然会乱码) 3.然后再把记事本的内容复制,在excel中粘贴就可以了. 二.excel复制到SqlServer表数据 1.打开excel复制数据. 2.用编辑状态打开sql表 3.右键点击表最下面一行左侧的序号,选择粘贴(注意,excel的列一定要和sql表的列对应) 4.如果有自增,不要复制自增字段

C# 读取Excel中的数据

#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name="excelFile">Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls</param> /// <returns>Excel中的数据</returns> private DataTable GetTable(stri

c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导出当前页数据到Excel的 DataGridView命名为dataGridView1 1 //按下导出按钮 2 private void button7_Click(object sender, EventArgs e) 3 { 4 print(dataGridView1); 5 } 6 publi

Excel中的VBA编程

目的:有时我们需要对Excel文件中大量的数据进行整理,此时如果使用手动整理会非常繁琐而且容易出错.而如果采用VBA语言,在Excel中根据需求编写一段简单的代码就能自动完成大量数据的整理工作. 1.以Excel 2007为例,如果要进行VBA编程,需要启用"开发工具" 选项.在Excel 选项对话框中勾选[在功能区显示"开发工具"选项卡]复选框. 在开发工具选项中点击"查看代码",打开Microsoft Visual Basic界面. 2.在M

VBA在Excel中的应用(三)

目录  Chart Export Chart Format Chart Lengend  Chart Protect  Chart Title  Chart Chart Export 1. 将Excel中的图表导出成gif格式的图片保存到硬盘上 Sub ExportChart()     Dim myChart As Chart     Set myChart = ActiveChart     myChart.Export Filename:="C:\Chart.gif", Filt