zoukankan      html  css  js  c++  java
  • 功能区按钮调用Excel、PowerPoint、Word中的VBA宏:RunMacro

    功能区按钮调用Excel、PowerPoint、Word中的VBA宏:RunMacro

    众所周知,Excel、PPT、Word文档或加载宏文件中可以写很多过程和函数,调试的过程中当然可以按F8或F5直接在VBA环境中运行。

    不过,当你开发完一个工具的时候,一定会想到这些过程的执行方式,普遍的做法是向工作表上放置表单控件,用户在工作表上点击按钮来执行宏。

    另外的方式,就是利用CustomUI技术,制作一个扩展名为xlam的加载宏文件,通过Ribbon中的按钮来调用VBA宏。这种方式虽然美观了,但是存在的问题是只要开发一个工具,就得修改或新建一个加载宏文件,冗余操作很多。

    我最近开发了一个RunMacro的COM加载项,当加载后用户点击功能区中的按钮就可以调用他写的VBA过程

    *注意:一般情况下COM加载项里植入的功能区按钮只能调用COM加载项项目中的过程,而不是VBA中的过程。

    那下面就直接写使用方法了,看好了。

    第一步当然是下载和安装了,下载地址为:RunMacro-Setup.zip,安装后产生如下文件:

     其中,RunMacro.dll就是COM加载项本身,不用理他,Office三大组件会自动加载这个共用加载项。

    另外,会看到还有3个XML文件,例如用记事本打开Excel.xml,显然这是一个定制功能区的XML代码,默认情况下有四个button,注意里面的每个onAction,用它来指代点击按钮调用哪一个VBA过程,红框中的部分,是不是一看就明白?

     这个文件其他位置的编辑方法没什么两样,唯一注意的是就是onAction要写上VBA中确实存在的过程名称。当然你需要事先准备好的VBA代码了,假设你做了一个“上传工具.xlsm”,里面有个模块Module2,里面包含一个ABC过程。

     那么它恰好对应于<button id="Button3" label="Button3" imageMso="C" size="large" onAction="上传工具.xlsm!Module2.ABC"/>

    当你点击Button3这个按钮时,弹出一个“好棒呀”,这显然是VBA中的过程。 

     对于PowerPoint、Word,做法与Excel类似。效果如下:

     点击四个按钮其中的一个,会弹出错误对话框,这是很正常的。因为,我打开的幻灯片是空白的,没有任何宏。你需要事先准备一下。

    总结

    在使用工具的过程中,我们需要做的有两点,一是把VBA开发的工具做好,过程名明确,宏名是什么,它的模块名是什么,文件名是什么。

    二是根据VBA中的过程路径,来修改对应的XML文件中的onAction属性,我提供的模板仅仅是默认值,大家可以根据customUI的知识任意修改XML。

    那么,RunMacro究竟带来了哪些好处呢?

    1.用户不需要设计加载宏,也不需要开发COM加载项,只负责开发VBA部分即可。

    2.根据VBA工程结构,修改对应XML文件,是不是太简单。

  • 相关阅读:
    Sublime Text 乱码解决(Package Control 和 ConvertToUTF8插件安装)
    Hadoop搭建,上传文件时出现错误,没有到主机的路由
    Hadoop安装成功之后,访问不了web界面的50070端口怎么解决?
    centos7安装ifconfig命令
    Vmware Centos7 配置静态 ip 和 使宿主机和虚拟机互相 ping 通
    parallels desktop虚拟机与Mac共享网络设置方法
    NGINX轻松管理10万长连接
    Nginx upstream性能优化
    Linux性能调优、Linux集群与存储等
    Run time setting设置详解
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/11108695.html
Copyright © 2011-2022 走看看