龙空技术网

VBA|任意工作簿运行VBA过程(通用宏、加载项、自定义功能区)

小智雅汇 883

前言:

如今朋友们对“多个宏依次运行vba 子过程或函数未定义”都比较看重,各位老铁们都需要了解一些“多个宏依次运行vba 子过程或函数未定义”的相关文章。那么小编在网摘上收集了一些关于“多个宏依次运行vba 子过程或函数未定义””的相关内容,希望咱们能喜欢,看官们快快来了解一下吧!

一般来说,工作簿中编写好VBA代码后,为了保证下次打开该工作簿时可以继续运行VBA代码,需要将工作簿另存为.xlsm文件,如下图所示:

通常,一个.xlsm中的VBA过程只能在该工作簿中使用。现在的问题是,任意新建一个工作簿,如何在其它工作簿中运行已经在某一工作簿中编写的VBA代码?可以考虑的方法有:

I 保存为通用宏(XLSTART\Personal.xlsb);

II 保存并调用加载项;

III 自定义功能区;

以上三个方法现分述如下:

1 保存为通用宏

个人宏工作簿是一个自动启动的Excel文件,你可以用这个Excel文件保存经常使用的数据或者宏,例如你可以将你经常要使用到的例子或者反复使用的宏保存到个人宏工作簿中,这就相当于一个宏模板。个人宏工作簿可以为.xlsb格式,默认为Personal.xlsb文件,也可以直接创建.xlsx文件作为个人宏工作簿。

在一个打开的工作簿中录制宏,即点击状态栏左下角的宏录制命令,在录制新宏对话框中选择保存在个人宏工作簿。同时你也可以在Visual Basic编辑器中看到Personal.xlsb的工程。

XLStart文件夹的路径:

在如果你把Office程序安装在默认的C盘下,且是在Vista系统中安装的Excel 2007,则文件位置建立在:C:\Users\用户名\AppData\Roaming\Microsoft\Excel\XLSTART,用户名指的是你登录系统的帐号或C:\Program Files\Microsoft Office\Office12\XLSTART;

若是在XP系统中安装Excel 2007 ,则文件位置建立在:C:\Documents and Settings\用户名\Application Data\Microsoft\Excel\XLStart 用户名指的是你登录系统的帐号或C:\Program Files\Microsoft Office\Office12\XLSTART;

在word 2007中如何利用Normal模板共用宏:

开发工具→宏→管理器→复制按钮,即可将选中的宏复制到normal.dotm(共用模板);

此时打开的VBE的工程管理器窗口即可以看到多了一个normal.dotm的工程,也可以在其中看到保存的模块;

2 制作加载项

VBA Addin加载宏是一种使用VBA编写的程序,它通过加载设置,可以随Office程序启动而自动加载运行,是制作Excel自定义函数、Office菜单和功能区按钮、添加常用辅助功能的常用载体。

在Excel、PPT中都可以编制加载宏文件,Word则可以通过模板文件进行加载。根据版本和程序的不同,加载宏的文件类型也稍有区别,在2003版本中,Excel的加载宏扩展名是xla、PPT的加载宏扩展名是ppa;2007/2010版本中,Excel的加载宏扩展名是xlam,PPT的加载宏扩展名是ppam。其中低版本的加载宏可以在高版本的程序中使用,因此,只要代码具有通用性,可以在编制完成保存为低版本的加载宏文件,以便于在不同版本中使用。

它们的文件图标有别于普通的Excel或PPT文件,如下图所示:

加载宏文件有默认的存放路径,找到这个路径很容易,当文件保存选择“另存为”时,选择“加载项类型”,“另存为”对话框即可跳到默认的存放路径。如C:\Users\wwuhnwu01\AppData\Roaming\Microsoft\AddIns。

2.1 包含有宏的工作簿文件另存为xlam文件,并保存到默认路径:

工作簿(有宏)另存为→Excel加载宏,xlsm文件,如下图所示:

3.2 启用加载项:

Excel选项→加载项→转到→勾选加载项→确定,如下图所示:

3 自定义功能区,将VBA过程关联到菜单项或工具图标

3.1 VBA中自定义菜单命令组、自定义工具栏主要是利用CommandBars对象的方法进行添加,添加的自定义菜单命令组和自定义工具栏将出现在“加载项”选项卡中。具体细节见:

《VBA|自定义菜单命令组、自定义工具栏》

3.2 通过编写XML代码来完成定制RibbonX,且将该XML代码包含到工作簿文件中,以达到定制RibbonX的目的,具体细节见:

《Excel2007|RibbonX控件 & 自定义功能区》

-End-

标签: #多个宏依次运行vba 子过程或函数未定义 #vba宏调用另一个宏 #能不能在vba 程序中调用宏 #可以在vba程序中调用宏