功能区按钮调用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文件,是不是太简单。

功能区按钮调用Excel、PowerPoint、Word中的VBA宏:RunMacro的更多相关文章

  1. [原创]Java调用PageOffice给Word中的Table赋值

    Word中的table操作需要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.因此,要想使用table,则必须在w ...

  2. 将Gridview中的数据出到excel或word中

    在以下按钮单击事件中实现:private void btnMIME_Click(object sender, System.EventArgs e){dgShow.AllowPaging = fals ...

  3. 【128】Word中的VBA

    通过查找关键字,然后删除整段文字的实现! Sub 删除查找含关键词的行() Dim KeyWord As String KeyWord = InputBox("请输入关键词(词长不限,中英均 ...

  4. [转载]Java给word中的table赋值

    一.准备工作: 下载PageOffice for  Java:http://www.zhuozhengsoft.com/dowm/ 二. 实现方法: 要调用PageOffice操作Word中的tabl ...

  5. [原创]Java给word中的table赋值

    一.准备工作: 下载PageOffice for  Java:http://www.zhuozhengsoft.com/dowm/ 二. 实现方法: 要调用PageOffice操作Word中的tabl ...

  6. Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

    Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑&qu ...

  7. C# 将excel表格嵌入到Word中

    C# 将excel表格嵌入到Word中 继续开扒,今天要实现的是使用C#将excel表格嵌入到Word中这个功能,将word表格导入到excel中我已经写过了,如有需要可参考我之前的文章,在开始前还有 ...

  8. c# 调用EXCEL在VS上能正常运行,部署在IIS上不能实现,在VS中运行页面和发布之后在IIS中运行的区别

    发现一篇文章,很好,解决了这个问题:感谢原博主!特此做个笔记. 地址:http://www.cnblogs.com/zhongxinWang/p/3275154.html 发布在IIS上的Web程序, ...

  9. 64位操作系统(Windows 2008 R2 X64)ASP.NET 调用32位Excel,word 出现401 – 未授权: 由于凭据无效,访问被拒绝。

    先确保IIS设置正确,目录权限设置正确. 打开“IIS信息服务管理器”——>选择你发布的网站——>选择功能视图中的“身份验证”——>右键匿名身份验证,选择“编辑”,选择“特定用户“– ...

随机推荐

  1. iOS 多线程 GCD part3:API

    https://www.jianshu.com/p/072111f5889d 2017.03.05 22:54* 字数 1667 阅读 88评论 0喜欢 1 0. 预备知识 GCD对时间的描述有些新奇 ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. DRF源码-serializers

    class BaseSerializer(Field) """ The BaseSerializer class provides a minimal class whi ...

  4. JavaEE--JNDI(下,实现)

    参考:https://blog.csdn.net/ouyida3/article/details/46699023  https://www.landui.com/help/show-6158.htm ...

  5. Cracking Digital VLSI Verification Interview 第一章

    目录 Digital Logic Design Number Systems, Arithmetic and Codes Basic Gates Combinational Logic Circuit ...

  6. Centos7开机启动自己的脚本

    1. 自己新建一个脚本,如centnet-service.sh 经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动tomcat,oracle等服务. ...

  7. CSS3新特性—过渡、转换

    过渡 转换 2D转换 2D转换包括四个方面:位移,缩放,旋转,倾斜 位移[让元素移动位置] transform: translate(100px,100px); 备注: 1. 如果只设置一个值,那么代 ...

  8. windows下MariaDB忘记密码找回

    1.首先停止数据库 2.找到my.ini文件 3.右键以记事本打开在Mysqld下添加如下一行保存,然后启动数据库 4.登录数据库会提示输入密码,默认回车即可 5.退出数据库,删除我们上面在my.in ...

  9. MySQL性能管理及架构设计:第1章 实例和故事

    1-1 什么决定了电商双11大促的成败 数据库架构 1-2 在双11大促中的数据库服务器 通过监控信息从而确定:哪些因素影响了数据库性能? 1-3 在大促中什么影响了数据库性能 1-4 大表带来的问题 ...

  10. Node.js—小试牛刀-创建目录

    今天第一天学习Node.js  感觉特别亲切 //文件结构 //引入模块 const path=require('path') const fs=require('fs') let roots='H: ...