Ruby操作VBA的注意事项和技巧(2):宏里调用和控制窗体以及窗体上的控件、不同workbook之间的宏互相调用
4.宏里调用并控制窗体以及窗体上的各种控件
1 Sub Criterion_Check() 2 If Workbooks.count = 0 Then '如果当前没有打开的工作薄的话需要发出警告 3 MsgBox "工作簿未创建,请先创建一个工作簿,或打开一个工作簿。" 4 Exit Sub 5 End If 6 CriterionCheckDlg.Show (vbModeless) '调用对话框进行规则检查,放到static_check函数下,在按钮CommandButtonOk的响应事件下调用该函数 CriterionCheckDlg.CommandButtonOk = True '哈哈,直接调用按钮事件原来就可以啦,直接设置窗体的CommandButtonOk属性设置为True,后面凡是调用这个Criterion_Check宏的都会自动触发按钮执行静态检查,无需再麻烦进行快捷键出发了,简直太棒了 7 End Sub
5.不同WorkBook之间宏的相互调用(基于Ruby里的Run方法只能调用系统宏和当前Excel自带宏的问题提出的解决方法)
1 excel.Run('CriterionCheck')#这个宏只能是当前操作的Excel里的宏,为了用一个workbook里的宏操作另一个workbook,应该在VBA里用切换活动窗口的形式,而且把前面的宏的操作设置为针对活动窗
别问我为神魔不能直接写一个宏供系统里工所有打开的Excel调用,公司里的Excel2007应该是做过改装的,没有那个可以存储自定义宏供所有Excel文件都可以调用的个人工作簿PERSONAL.XLSB。本来我写了一个名为内容为空的A.xlsm的文件存储了用于
部门业务的宏,但当在Ruby里用run方法调用的时候,处理的永远是宏所在的这个啥内容都没有的A.xlsm,,,简直快逼疯宝宝了...苦想两天,终于彻底解决了这个问题!!!解决步骤如下
(a):同时打开A.xlsm和业务需要处理的Excel文件(例如B.xlsm),在业务宏(含有各种规则)里设置B.xlsm为当前活动窗口
1 Dim i As Integer, str As String 2 i = Workbooks.count 3 i = i - 1 4 'MsgBox i 5 'For i = Workbooks.count To 1 Step -1 6 'str = Workbooks(i).Name 7 'MsgBox "第" & i & "个活动窗口名称为" & str 8 Workbooks(i).Activate '将要检查的表先打开,再打开含有静态检查宏的表,这个顺序是必要的,绝对不苛刻颠倒,要不会出很大问题!!
(b)在要调用业务宏之前,同样要先执行一遍上面的代码,然后就可以执行业务宏了,处理的即为自己想要处理的表格
1 Sub 切换工作簿() Dim i As Integer, str As String 2 i = Workbooks.count 3 i = i - 1 4 'MsgBox i 5 'For i = Workbooks.count To 1 Step -1 6 'str = Workbooks(i).Name 7 'MsgBox "第" & i & "个活动窗口名称为" & str 8 Workbooks(i).Activate 9 10 Criterion_Check’业务宏调用,处理的即为上面的Workbooks(i) 11 'Next i 12 13 End Sub
Ruby操作VBA的注意事项和技巧(2):宏里调用和控制窗体以及窗体上的控件、不同workbook之间的宏互相调用的更多相关文章
- Ruby操作VBA的注意事项和技巧(1):乱码、获取VBA活动和非活动窗口的名称与路径、文件路径的智能拼接与截取(写入日期)
1.VBA编辑器复制粘贴出来的代码乱码 解决方法:切换到中文输入模式再复制出来就行了 2.获取VBA活动和非活动窗口的名称与路径 Dim wbpath, filename As String ...
- 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...
- WinForm中新开一个线程操作 窗体上的控件(跨线程操作控件)
最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录窗体的显示,开了一个线程去加载数据远程的数据,会报一个错误"线程间操作无效: 从不是 ...
- 在C#中使用 SendMessage 实现操作外部其他程序上的控件教程
一.C#代码实现 本案例使用的是c# winform .NET Framework 4.7.2 首先我们声明一个寻找窗体的函数 [DllImport("User32.dll", E ...
- javascript控制子页面对父页面控件操作
//赋值 window.parent.document.getElementById("partyid_trade_edit").value = data.data.partyid ...
- C#多线程操作界面控件的解决方案(转)
C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...
- WebBrowser控件使用技巧分享
原文:WebBrowser控件使用技巧分享 在发布“淘宝登货员”时发现不少朋友对WebBrowser控件比较感兴趣,故在此分享一下使用心得. 首先分享一个WebBrowser的扩展类(此类所需的dll ...
- 《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ...
- mvc file控件无刷新异步上传操作
前言 上传文件应该是很常见必不可少的一个操作,网上也有很多提供的上传控件.今天遇到一个问题:input控件file无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下.主要分三个部分:上传 ...
随机推荐
- JBoss的安装与配置(对应eclipse配置)【转】
安装JBoss纯粹是目的就是学习EJB3...至少现在是这样的 EJB需要运行在EJB容器中.每个J2EE应用服务器都含有EJB容器和Web容器.这样,既支持运行EJB,也可以运行Web应用 目前EJ ...
- PM2的使用
PM2 是一个带有负载均衡功能的 Node 应用的进程管理器. 安装 npm install -g pm2 启动程序:pm2 start <app_name|id|all> 列举进程:pm ...
- Linux最常用命令及快捷键整理
最近在学Linux系统命令,在阿里云买了一台linux服务器.为方便自己也方便他人,整理了Linux常用命令及快捷键. 用命令: 文件和目录: # cd /home ...
- 说说怎么写clean code
前两天参加了公司组织的一个培训,主题是“如何写出好的代码” ,刚看到这个主题,第一反应是又不知道是哪个培训机构来忽悠钱的!老大安排了,就去听听呗. 说实在的,课程内容没有什么新鲜的东西,就是讲讲如何发 ...
- PHP运行错最有效解决办法Fatal error: Out of memory (allocated 786432) (tried to allocate 98304 bytes) in H:\freehost\zhengbao2\web\includes\lib_common.php on line 744
原文 PHP运行错最有效解决办法Fatal error: Out of memory (allocated 6029312) Fatal error: Out of memory (allocated ...
- Is Anchor magento
如何在magento分类页的Layered Navigation中可以用magento后台已有的attributes进行筛选. 首先,进入后台 Catalog > Manage Categori ...
- TCP协议中的三次握手和四次挥手
转自: http://blog.csdn.net/whuslei/article/details/6667471/ 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示:
- Magento去掉价格的小数点
magento的默认情况,价格后面是有小数点的,我们来看下如何正确的来去掉小数点. 1.复制如下路径的文件 app/code/core/Mage/Directory/Model/Currency.ph ...
- python 递归
学习python,正好用一个例子练习一下递归. 参考文档: http://www.runoob.com/python/python-exercise-example18.html 题目:求s=a+aa ...
- css中的盒子模型
css中的盒子模型 css中的盒子模型,有两种,一种是“标准 W3C 盒子模型”,另外一种是IE盒子模型. 1.w3c盒子模型 从图中可以看出:w3c盒子模型的范围包括了:margin,borde ...