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无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下.主要分三个部分:上传 ...
随机推荐
- [教程] 以本论坛为例,手把手教你使用按键精灵POST登陆网页
本帖最后由 isaacc 于 2012-2-26 11:08 编辑 整个操作,很无脑.只要你够勤快,你学不会,你来咬我.懒人和伸手党就直接复制代码去玩吧,但我不是叫你拿去干坏事. 准备工具:WPE和I ...
- CC2540 USB Dongle 使用说明
CC2540做的USB Dongle可以烧写不同的固件从而做很多PC端的应用,下面我们来介绍下下载固件的方法和一些典型应用: 下载接口: 3V3引脚连接到CC Debugger的Target Volt ...
- yum change source repo centos共存安装sun jdk6和jdk7
之前一直使用的是163的源,今天从微博看到阿里云推出了自己的源.因为我的主机是阿里云,所以可以走内网,速度提升更快.过程如下:cd /etc/yum.repos.d/mv mv CentOS-Base ...
- 【Android测试】【第一节】性能——CPU
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5065083.html 前言 本来打算写完全部的自动化测试之 ...
- C++用数组实现的静态队列
#ifndef _STATIC_QUEUE_H_ #define _STATIC_QUEUE_H_ // 静态queue模板,用数组实现的队列,在初始化的时候需要指定长度 template<cl ...
- PE文件格式图示
- raspberryPi 拍照
调用python的库,学习raspberryPi的摄像头操作方法. 参考链接: https://www.raspberrypi.org/learning/getting-started-with-pi ...
- iOS GCD简单使用
Grand Central Dispatch (GCD) 1)运行在主线程的Main queue,通过dispatch_get_main_queue获取. /*!* @function dispatc ...
- Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
SQL> drop table test; 表已删除. SQL> create table test as select * from dba_objects where 1!=1; 表已 ...
- 分享一个使用APICloud云数据库已上线的商城APP
本项目盈利模式依赖taobao模块实现淘宝闭环交易,发布销售淘宝联盟产品获取返佣.目前已在应用宝上线安卓版本,先上图. 源码在此: http://community.apicloud.com/bbs/ ...