- ?
研究人员发现利用Excel宏可发起跳板攻击
Zuo
展开
E安全9月13日讯 SpecterOps公司的研究人员Matt Nelson(马特·尼尔森)研究是否可以通过Microsoft Excel发起跳板攻击(Pivoting)。结果,Nelson发现默认的启动与访问权限存在漏洞,意味着基于宏的攻击无需与受害者交互。
跳板攻击(Pivoting)
如果攻击者成功入侵了一台主机,他就可以任意地利用这台机器作为跳板攻击网络中的其他系统。
Nelson发现未设置明确的启动或访问权限的Excel.Application控件会被DCOM组件暴露。因此攻击者能通过其它方式实施初始攻击,同时Microsoft Office宏安全机制无法阻止这类跳板攻击,这时Excel.Application能被远程启动,从而达到攻击者攻击的目的。
简单来说,DCOM默认管理权限允许用户远程启动后,通过Excel.Application组件接口发起远程链接,之后插入恶意的宏就可以发起攻击。
这就意味着远程攻击者可以执行包含恶意宏的Excel电子表格。由于VBA允许Win32 API访问,可能会出现无穷无尽的Shellcode Runner。
这只是PoC,Nelson并未执行任何恶意操作,他仅仅启动了calc.exe。Nelson表示,这非常简单,只需创建一个新的宏,随意命名,并添加至代码保存。在这起实例中,Nelson将宏命名为“MyMacro”,并以.xls格式保存文件。
Nelson演示中使用的计算器Shellcode生成Excel子进程,但Nelson指出,由于VBA提供大量与操作系统之间的交互,可能不会生成子进程,而是注入到另一个进程。
Nelson补充称,最后的步骤是远程清除Excel对象,并将Payload从目标主机上删除。
虽然这种攻击受限于拥有本地管理员组权限的用户,但这种攻击媒介相当严重。毕竟,在这个攻击中,Nelson假设本地管理员组中的一台设备已经被黑。
缓解措施
Nelson表示缓解措施是存在的,但这些措施可能会比较麻烦。系统管理员可以手动设置Excel.Application的远程启动和访问权限,但这可能会影响其它Office应用。
Nelson提出的其它缓解措施包括:使用dcomccnfg.exe修改启动与访问自主访问控制列表(简称DACL),开启Windows 防火墙,并限制本地管理员的数量。文章来源: E安全
- ?
其实我想说,Excel VBA学习的最快方法就是借鉴,没有之一
侯熠彤
展开
如果您已经掌握了Excel VBA的基本概念和简单语法,需要快速提高技术水平,以便可以早日完成各种简化工作的小程序,甚至能够编制功能强大的报表系统。
于是,但凡有教程自称为“秘籍”或“宝典”的,都会引发大家的无限遐想。因为在各种武侠小说中,某人物因为一本(甚至只是几页)武学秘籍而改变命运、屌丝逆袭的经典桥段实在太多了,让人无限向往。但是,如果冷静分析一下前后情节,您就可以了解到这样的三个事实。
对应这三条,我们来看看Excel VBA这门武功如何。
如果要对Sheet1的A1:A100单元格区域进行汇总,按
组合键就可以了,手快只需要0.1秒。如果每天要对1000个工作簿的Sheet1的A1:A100单元格区域进行汇总,那么只会自动求和的绝顶高手就想跳楼了。可是对于学习过VBA的人来说,几行代码就可以解决问题。 在信息时代,技能学习信息只有过剩没有限制。即对于多数学科、技能,只要你想学习,教材是永远不缺的,老师也非常容易找。以前都是“收徒弟”,现在基本上是“收师傅”了。
想学有所成,时间和精力是必需的,从古至今皆如此。当然,我很期待有一天能像《骇客帝国》里那样学习技能——直接下载到大脑里就行了。
这么一分析,我刚才说的“快速提高”岂非奢望而已?那也未见得。首先,教材虽多,却有良莠之分,有适合之分,选择适合自己的优秀教材,那么就能快人一步。其次,注重学习方法,循序渐进,将有限的学习时间投入到最有价值的学习环节中,学习过程中少走弯路,那么又能快人一步。有了这两个基础,再辅以必要的学习时间,那么必能事半功倍,获得“快速提高”了。
谈到循序渐进,在Excel VBA学习之路上具体应该怎么做呢?下图内容是值得参考的阶段性指标和学习重点。
“拿来主义”很流行,也很有效,而且绝不丢人。所以,看懂别人的代码,然后修改之,变为自己的代码,这是一种能力。先啃小段的代码,再研究完整的程序,逐步提高。顶尖的编程高手通常都有自己的代码库,几乎所有的新程序都是从代码库中调取所需的模块修改后搭建而成的,而绝不是从头一行一行写出来的。高手们平时很重要的工作就是维护好自己的代码库。
本书一个很重要的使命就是成为学习者的代码库,所有的代码都可以拿来即用。对于学习者来说,花时间去多读、读懂代码,是实现快速提高水平的保障。
当然,我们鼓励“拿来主义”,可不是在教您如何“抄袭软件”。我们只能学习他人分享的代码,或者是教材上的代码。您不可以打着学习的幌子,破解别人的软件,而且还把作者写成您自己。
最后,祝大家学习愉快。
- ?
宏如何使用?--excel的学习
kina
展开
如果你已经用excel很长时间了,那么您一定听过宏这个名称,很多人都不知道宏是用来干什么的,今天我们就来了解一下excel中宏的作用与帮助,如果您经常在excel中重复一个任务,那就可以用宏来自动执行该任务了。
宏是一系列命令和函数,存储于 Visual Basic 模块中,并且在需要执行该项任务时可随时运行。例如,如果经常在单元格中输入长文本字符串,则可以创建一个宏来将单元格格式设置为文本可自动换行。录制宏 在录制宏时,Excel 在您执行一系列命令时存储该过程的每一步信息。然后即可运行宏来重复所录制的过程或“回放”这些命令。如果在录制宏时出错,所做的修改也会被录制下来。Visual Basic 在附属于某工作薄的新模块中存储每个宏。使宏易于运行 可以在“宏”对话框的列表中选择所需的宏并运行宏。如果希望通过单击特定按钮或按下特定组合键来运行宏,可将宏指定给某个工具栏按钮、键盘快捷键或工作表中的图形对象。
管理宏 宏录制完后,可用 Visual Basic 编辑器查看宏代码以进行改错或更改宏的功能。例如,如果希望用于文本换行的宏还可以将文本变为粗体,则可以再录制另一个将单元格文本变为粗体的宏,然后将其中的指令复制到用于文本换行的宏中。“Visual Basic 编辑器”是一个为初学者设计的编写和编辑宏代码的程序,而且提供了很多联机帮助。不必学习如何编程或如何用 Visual Basic 语言来对宏进行简单的修改。利用“Visual Basic 编辑器”,您可以编辑宏、在模块间复制宏、在不同工作簿之间复制宏、重命名存储宏的模块或重命名宏。
虽然很多人使用excel宏,在excel中宏安全性 Excel 对可通过宏传播的病毒提供安全保护。如果您与其他人共享宏,则可使用数字签名来验证其他用户,这样就可保证其他用户为可靠来源。无论何时打开包含宏的工作簿,都可以先验证宏的来源再启用宏。
- ?
excel 这也许是史上最好最全的VLOOKUP函数教程
挣脱
展开
函数中最受欢迎的有三大家族,一个是以SUM函数为首的求和家族,一个是以VLOOKUP函数为首的查找引用家族,另外一个就是以IF函数为首的逻辑函数家族。根据二八定律,学好这三大家族的函数,就能完成80%的工作。
现在一起来学习VLOOKUP函数,让关于查找的烦恼一次全解决!
1、根据番号精确查找俗称。
=VLOOKUP(D2,A:B,2,0)
VLOOKUP函数语法:
=VLOOKUP(查找值,查找区域,返回查找区域第N列,查找模式)
VLOOKUP函数示意图。
2、屏蔽错误值错误值查找。
=VLOOKUP(D2,A:B,2,0)
VLOOKUP函数如果查找不到对应值会显示错误值#N/A,这个看起来很不美观。这时可以在外面加个容错函数IFERROR,如果是2013版本那就更好,可以用IFNA函数,这个是专门处理#N/A这种错误值。
=IFERROR(VLOOKUP(D2,A:B,2,0),"")=IFNA(VLOOKUP(D2,A:B,2,0),"")
函数语法:
=IFERROR(表达式,错误值要显示的结果)
说白了就是将错误值显示成你想要的结果,不是错误值就返回原来的值。IFNA函数的作用也是一样,只是IFERROR函数是针对所有错误值,而IFNA函数只针对#N/A。
3、按顺序返回多列对应值。
通过上面的例子,我们知道可以通过更改第3参数,返回各项对应值如:
=VLOOKUP($A13,$A$1:$F$10,2,0)=VLOOKUP($A13,$A$1:$F$10,3,0)
如果项目少,更改几次参数也没什么,但项目多时,肯定不方便。如图 5103所示,可以通过ROW、COLUMN产生行列号,从而得到1,2,……,n的值。
=VLOOKUP($A13,$A$1:$F$10,COLUMN(B1),0)
因为这里是同一行产生序号,所以用COLUMN函数。
4、按不同顺序返回对应值。
这回看来只能手动更改第3参数了,COLUMN完全派不上用场。
NO!每当你觉得操作繁琐时,就要停下来思考,也许Excel本身存在这个功能,只是自己一时想不到或者不知道而已。列号不管千变万化,在数据源的位置始终不变,利用这个特点可以去搜索一下看看有什么函数可以解决。
在“搜索函数”文本框输入:位置,单击“转到”按钮,就会出现跟位置有关的函数,查看每个函数的说明,找到我们需要的,如MATCH函数,返回符合特定值特定顺序的项在数组中的相应位置,单击“确定”按钮。
在弹出的“函数参数对话框”中尝试填写相应的参数,每个参数的作用下面都有相关说明,填写后会出现计算结果3,也就是订单数在区域中是第3列。尝试下更改第1参数为C12(俗称),计算结果是2,也就是区域中第2列。经过尝试,知道这个函数是我们要找的那个函数,单击“取消”按钮,返回工作表。
在单元格再做最后一次验证。
到这一步已经十拿九稳了,将公式设置为:
=VLOOKUP($A13,$A$1:$F$10,MATCH(B$12,$A$1:$F$1,0),0)
5、根据番号逆序俗称。
帮助提到VLOOKUP函数只能按首列查找,不能逆向查找,既然如此,那就得想办法将非首列的区域转换成首列。怎么转换区域呢,这时IF函数就派上用场。一步步来了解IF函数的转换。
看看好友传递如何趣聊IF函数,吃货的福音。
IF函数其实只有一个条件来判断是否符合条件,返回FALSE和TRUE两种结果。
当菜只有分甜的或咸的2种口味时,甜味是红烧肉,咸味是酱油肉。
盲人吃饭时,看不到是什么菜。当别人问盲人:“你现在吃的什么菜? 是咸的吗?如果是咸的,就是酱油肉,如果不是咸的就是红烧肉。”(给定判断条件:咸味)盲人刚好在吃红烧肉,于是就咂吧着嘴说:“恩,好吃,不是咸的!是红烧肉”(根据提问的要求,不符合咸的)假如要是盲人当时是在吃酱油肉呢,一定回答;“是的,咸的,是酱油肉”(条件为真,是!TRUE)。盲人根据口感,结合提问者说的条件,就知道自己吃的是红烧肉还是酱油肉了。
把这段话用公式来写:
=IF(A1="咸的",A2,B2)
翻译:是咸的吗?要是(TRUE),就是酱油肉,要是不是咸的(FALSE),就是甜的红烧肉。
A1="咸的"这个条件也可以直接换成TRUE或者FALSE。
=IF(TRUE,A2,B2)
因为满足条件,所以返回A2的对应值酱油肉。
=IF(FALSE,A2,B2)
因为不满足条件,所以返回B2的对应值红烧肉。
其实TRUE=1,FALSE=0,所以可以直接用1跟0表示。
=IF(1,A2,B2)=IF(0,A2,B2)
IF函数不止可以返回1个单元格的值,也可以返回多个单元格的值。
=IF({1,0},A2,B2)=IF({0,1},A2,B2)
选择两个单元格输入,按Ctrl+Shift+Enter三键结束。条件为{1,0},返回A2:B2的对应值顺序不变;条件为{0,1},返回A2:B2的对应值,顺序对换。也就是说通过改变1跟0的位置,可以调换两单元格的前后位置。
看到这里,知道IF函数通过改变1,0可以调换单元格的顺序,如果要改变区域的顺序也是可以实现的。
用IF函数重新构造的新区域,是多单元格数组公式,记得按Ctrl+Shift+Enter三键结束,否则出错。
新区域:
=IF({1,0},B2:B10,A2:A10)
所以公式可以变成:
=VLOOKUP(A13,新区域,2,0)
两个公式合并,大功告成。
=VLOOKUP(A13,IF({1,0},$B$2:$B$10,$A$2:$A$10),2,0)
6、根据俗称跟订单号两个条件查询完成情况。
正常情况下VLOOKUP函数是不能多条件查询,通过IF函数的学习,我们知道IF函数可以重新构造区域,这里就再次用IF构成一个区域。
新区域:
=IF({1,0},A2:A9&C2:C9,E2:E9)
所以公式可以变成:
=VLOOKUP(A12&B12,新区域,2,0)
两个公式合并,大功告成,记得按Ctrl+Shift+Enter三键结束。
=VLOOKUP(A12&B12,IF({1,0},$A$2:$A$9&$C$2:$C$9,$E$2:$E$9),2,0)
7、根据俗称的第一个字符查找番号。
=VLOOKUP(D2&"*",A:B,2,0)
星号(*)是通配符,代表所有字符,问号(?)代表一个字符。D2&"*"就是开头包含D2的意思。
8、根据区域判断成绩的等级。
借助辅助列的话,很容易查询等级,只需将VLOOKUP函数的第四参数设置为1或者省略即可。
=VLOOKUP(E2,A:C,3)
如果不用辅助列,估计很多人看到这条公式就得哭了,得结合前面所有函数知识才能完成,有兴趣的朋友可以自己去研究。
=VLOOKUP(E2,IF({1,0},--LEFT(B$2:B$5,FIND("-",B$2:B$5)-1),C$2:C$5),2)
前阵子无意间发现了IMREAL函数,所以不用辅助列的数组公式可以稍微简单一点。
=VLOOKUP(E2,IF({1,0},IMREAL(B$2:B$5&"i"),C$2:C$5),2)
IMREAL函数是计算复数的实部系数的函数,作用就是提取区间的下限。
通过这8个疑难,基本上的查询问题都能够解决。
开心吗?一下搞定8大疑难!
- ?
EXCLE 2010 VBA教程
穆菲音
展开
01-01、Excel VBA教程简介
01-02、宏在工作中的运用
01-03、Excel VBA基础
01-04、Excel VBA窗口介绍
01-05、Excel VBA代码编写规则
01-06、对象
01-07、属性
01-08、方法
01-09、常量与变量
01-10、数据类型
01-11、判断语句之IF
01-12B、If条件判断小结
01-12、判断语句IF之多条件
01-13、判断语句之SELECT
01-14、循环语句之DO...LOOP
01-15、循环语句之DO...LOOP实例
01-16、循环语句之DO WHILE...LOOP
01-17、循环语句之DO UNTIL...LOOP
01-18B、DO...LOOP 语法小结
01-18、循环语句之WHILE与UNTIL位置变化
01-19、.循环语句之FOR EACH...NEXT
01-20B、For...NEXT小结与实例
01-20、循环语句之FOX...NEXT
01-21、用语句FOR...NEXT制作九九乘法表
01-22、exit与end语句
01-23、跳转语句
01-24、错误分支语句
01-25、with语句
01-26、VBA与公式
01-27、VBA与函数1
01-28、VBA与函数2
01-29、VBA与运算符
01-30、like运算符
01-31、like运算符运用
01-32、综合运用(盘点清单核对)
02-00、工作簿与工作表基础知识
02-01、工作簿的表示方法
02-02、当前工作簿与活动工作簿
02-03、工作簿基础操作
02-04、工作簿实例应用
02-05、工作表的表示方法
02-06、工作表集合应用
02-07、工作表增加与删除
02-08、工作表增加删除实例
02-09、工作表移动与复制
02-10、工作表选择与激活
02-11、工作簿综合运用(拆分工作簿)
03-00、EXCEL单元格基础
03-01、Range引用基础1
03-02、Range引用基础2
03-03、Range引用与变量
03-04、Range引用与索引值
03-05、Range引用与索引值应用(有条件的平均工资)
03-06、Cells单元格引用基础
03-07、单元格简写
03-08、三种单元格引用小结
03-09、行、列引用
03-10、row与column属性
03-11、单元格的值与地址
03-12、单元格移动与复制
03-13、行列插入与删除
03-14、活动单元格与选择区域
03-15、UsedRange已使用区域(条件统计)
03-16、currentregion当前区域
03-17、单元格的Offset(给工资条加、减表头)
03-18、单元格的resize(单据数据保存)
03-19、单元格所在行与列(删除空行)
03-20、specialcells定位(按批注汇总)
03-21、FIND单元格查找技术
03-22、单元格查找应用(制作查询系统)
03-23、FIND实例应用(进销存之入库单)
03-24、FIND实例应用(进销存之入库单)
03-25、单元格END属性
03-26、单元格END属性应用(查找分期付款最后月份)
03-27、最后的格格
03-28、单元格并集(Union)
03-29、单元格并集应用(条件筛选)
03-30、单元格交集(Intersect)
03-31、单元格式之数字格式
03-32、单元格式之字体(VBA实现条件格式)
03-33、给你点颜色看看(底纹颜色讨论)
03-34、单元格式实例(工资条格式化)
03-35、利用查找颜色拾取进行颜色汇总
03-36、粘贴
03-37、选择性粘贴
03-38、合并单元格(相同部门的合并)
03-39、合并单元格实例(取消合并单元格并保持数据)
03-40、批注基础(有条件的添加批注)
03-41、批注修改(给员工加批注图片)
03-42、图形基础
03-43、图形插入实例(根据姓名导入图片)
03-44、综合运用(多表合并)
03-45、综合运用(多表拆分)
04-00、EXCEL事件程序定义与作用
04-01、事件程序基础
04-02、工作表事件实例1(自选计算与投票统计)
04-03、工作表事件实例2(状态栏地址与防工作表名更改)
04-04、工作表事件实例3(自动列出工作表名与单元格区域保护)
04-05、工作簿事件实例1(自动选择月份表、右键禁用、打印控制)
04-06、工作簿事件实例2(给工作表加密码)
04-07、应用程序事件基础
04-08、应用程事件实例(打印控制)
04-09、事件程序总结
05-01、数组基础
05-02、数组维度
05-03、向数组中写数据
05-04、在数组中取数据
05-05、数组运用(数据汇总)
05-06、数组写入与读取实例(数组的优势体现)
05-07、数组运用1(计算不重复值)
05-08、数组运用2(计算不重复值)
05-09、数组运用(分类求和)
05-10、动态数组(条件筛选)
05-11、动态数组(多表合并)
05-12、Split函数与数组(字符串生成数组)
05-13、Join函数与数组(数组生成字符串)
05-14、Fileter函数与数组(巧用Filter实现多列结果)
05-15、工作表函数与VBA数组(几句代码制作查询系统)
05-16、借助VBA数组快速格式化单元格
05-17、利用VBA数组进行排序
05-18、VBA数组分类汇总
06-00、字典技术的魅力
06-01、字典基础(你可能不会字典!)
06-02、字典语法基础1
06-03、字典语法基础2
06-04、字典语法基础3
06-05、字典数据写入技巧讨论
06-06、字典实例(第1次与最后一次采购价提取)
06-07、字典实例(多表求不重复值)
06-08、字典实例(字典与数组经典结合)
06-09、字典实例(分类计算)
06-10、字典应用(多列合并计算)
06-11、字典应用(自动查询)
07-01、从通配符到正则表达式
07-02、VBA中引入正则表达式
07-03、正则表达式基础
07-04、正则表达式(普通字符)
07-05、正则表达式(元字符)
07-06、元字符应用(数字、字符提取)
07-07、元字符之量词
07-08、元字符之量词实例
07-09、分组
07-10、后向引用与非捕获
07-11、字符组(拆分单词)
07-12、字符组(去编号)
07-13、首尾锚定
07-14、循环多个正则表达式
07-15、综合练习(重新排列)
07-16、零宽断言(有条件添加修改记录)
07-17、正向零宽断言(汇总凌乱的开销记录)
07-18、负向零宽断言(给单词加分隔符)
07-19、懒惰与贪婪模式(乱中取目录)
07-20、正则表达式属性(计算上班时间)
07-21、分组的妙用
07-22、分组运用(提取身份证信息)
07-23、正学表达式总结
08-01、自定义函数基础(小试牛刀)
08-02、自定义函数的调用与存放位置
08-03、自定义函数小实例(等级函数)
08-04、自定义函数-返回不重复随机数(结果是数组)
08-05、自定义函数(参数默认值设置)
08-06、自定义函数(参数不定)
08-07、自定义函数实例-身份证信息提取
08-08、自定义函数实例-单元颜色求和(字典+自定义函数)
08-09、自定义函数实例-反转字符与数字求和(正则+自定义函数)
08-10、自定义函数实例-提取不重复值(字典+正则+自定义函数)
09-01、开启进入Word的大门
09-02、Word基础操作
09-03、word中的表格
09-04、从Word表格提取数据
09-05、从word文字中提取数据
09-06、提取excel数据到word
10-01、消息框基础
10-02、MSGBOX第二参数详解
10-03、MSGBOX返回值
10-04、InputBox基础与区别
10-05、InputBox实例(用户与密码校验)
10-06、InputBox方法Type参数详解(制作通用控件的好方法)
11-01、一封情报引发的知识
11-02、类模块基础
11-03、类的实例应用(等级判断)
11-04、属性过程中对象的操作(模板定制)
11-05、属性过程中对象的操作(条件累加)
11-06、用Function过程创建方法
11-07、综合应用方法
11-08、用sub过程创建方法
11-09、类模块与程序事件
12-01、窗体基础
12-02、窗体属性
12-03、窗体属性
12-04、窗体事件
12-05、窗体按钮控件
12-06、制作变幻的登录界面
12-07、标签与按钮控件(登录界面控件设计)
12-08、标签与按钮控件(登录界面控件设计)
12-09、文本框控件(注册界面控制设计)
12-10、单选框控件(员工单设计)
12-11、复选框控件(员工单设计)
12-12、复合框控件(员工单设计)
12-13、列表框控件(员工单设计)
12-14、切换按钮控件(基础产品单设计)
12-15、图像控件(员工信息查询设计)
12-16、表单控件
12-17、表单控件
12-18、ActiveX控件组合框
12-19、ActiveX控件 (组合框实例-入库自动查询)
12-20、图像控件(动态显示员工照片)
13-01、自定义功能区的应用(演示)
13-02、解析excel 2010文件
13-03、认识功能区Ribbon
13-04、代码自定义功能区
13-05、初识RibbonX
13-06、XML语法结构讲解
13-07、OpenXML架构元素(一)
13-08、OpenXML架构元素(二)
13-09、OpenXML架构元素(三)
13-10、group元素-分组
13-11、button元素-按钮
13-12、button元素-按钮(让控件运行起来)
13-13、CallBacks-回调(点击控件访问网站)
13-14、CallBacks-回调(让按钮产生变化)
13-15、CallBacks-回调(让按钮产生变化)
13-16、给控件自定义图标
13-17、给控件自定义图标
13-18、动态变幻自定义图标
13-19、checkBox 元素-复选框(根据复选框状态录入数据)
13-20、editBox元素-文本编辑框
13-21、editBox元素-文本编辑框(较酷的用户名验证)
13-22、toggleButton元素-切换按钮
13-23、toggleButton元素-切换按钮(字母大小写切换按钮订制)
13-24、item元素-条目
13-25、comboBox元素-组合框
13-26、comboBox元素-组合框(利用组合框录入与筛选)
13-27、comboBox元素-组合框(动态填充组合框)
13-28、dropDown元素-下拉列表
13-29、Gallery元素-库(确实很酷)
13-30、Gallery元素-库(动态装载图片)
13-31、menu元素-菜单
13-32、menu元素-菜单 ( 定制系统登录和超链接)
13-33、splitButton元素-拆分按钮
13-34、splitButton元素-拆分按钮
13-35、dynamicMenu元素-动态菜单(动态获取单元格值为菜单项目)
13-36、dynamicMenu元素-动态菜单(动态获取单元格值为菜单项目)
13-37、dynamicMenu元素-动态菜单(动态筛选指定目录下的文件)
13-38、menuSeparator元素-菜单分割符 (动态变化的菜单标题)
13-39、separator元素-控件分隔线(动态显示分隔线)
13-40、box元素-控件框
13-41、dialogBoxLauncher元素-对话框启动器
13-42、Ribbon控件综合运用(制作通用插件)
13-43、Ribbon控件综合运用(制作登录界面)
14-01、幼儿园开票系统功能介绍
14-02、系统界面制作
14-03、系统单据初始资料设置
14-04、学生管理模块(增加功能)
14-05、学生管理模块(查询与修改功能)
14-06、主要单据的自动化设置
14-07、单据查询系统
14-08、工作表的显示隐藏设置
- ?
太实用了!Excel VBA常用代码!
语风
展开
前两天有两位朋友留言想收集一些VBA的常用代码,今天开始会陆续分享一些!
记得收藏好哦,因为今后你应用到稍大型Excel VBA程序时,这其中某些代码肯定会用到。
来看看都是哪些常用代码:
下面先举一个简单的例子:
场景再现:在当前的工作表中插入一张e盘中名为1.jpg的图片(长350、高300,距离Excel左侧90、上边框230)
操作方法:
第一步,打开vba代码区,输入通用格式【输入 sub 统计()回车即可】,并将名称改为“统计”;
第二步,输入控制语句(ActiveSheet.Shapes.AddPicture "e:.jpg", True, True, 90, 230, 350, 300);
第三步,看看结果。
后面会分享更多关于Excel VBA的知识,欢迎大家留言、讨论!
- ?
EXCEL2007 vba编程入门(实例对话框)
袁友琴
展开
1、新建EXCEL2007空白表格。xlsx格式的,将VBA工具栏调出。如图1.1
2、点击“开发工具”然后单击插入,在下拉的菜单的表单控件里面选择“按钮”,如图2.1
3、画个方框,会弹出一个对话框“指定宏”,单击"新建"按钮,这样就会进入后台的程序书写界面,进入以后,程序的头和尾已经帮你写好了,如图3.1,你只需要在中间写入一句程序“ MsgBox("hello world") ”。
4、为了保证宏正常运行,要在EXCEL的设置中进行启用宏操作。在“开发工具-宏安全性-宏设置:启用所有宏和勾选信任对VBA工程对象模型的访问”。如图4.1
5、最后点击另存为“启用宏的工作簿”的xlsm文件,然后退出程序界面。
- ?
1个案例教你学会Excel中的VBA
Geoff
展开
可能很多朋友不知道Excel中VBA的用途。那什么是VBA呢?
一句话概括:在Excel中想实现什么功能,就可以用VBA语言编写一段程序去完成。
今天通过例子带大家了解Excel中的VBA!
软件说明:Excel 2010版本
场景再现:表格中点击按钮,向单元格E1中输入数字 “233”,并且能够实现清除!
第一步、打开编写VBA代码的窗口
在Excel表格中编写VBA的窗口叫VBE编辑器,有两种打开的方法。
在工作表标签上右键 - 查看代码按Alt+F11
第二步、创建写VBA代码的地方
有朋友肯定会问:“我没学会编程怎么办?”、“我都没见过代码能行吗?”;别急!我的回复是肯定的!
在哪编写代码呢?有好几种方式,今天先学最常用的:“插入” - “模块”。新建一个模块用来存放编写的代码;记住:修改模板的名称:我的VBA模板【如下图虚线标注】
第三步、开始写代码
新建模板后,在右侧的空白位置就是编写代码的地方。可以执行的VBA代码,结构是这样的:
Sub 程序名(参数)可以执行任务的代码End Sub
因为例子中我要进行输入与清除的操作,输入Sub 程序名()然后回车,End Sub就会自动输入;如下图:
在开始和结束语句之间输入代码,执行在单元格A1中输入数字"233"
Range("E1") = 123
备注:在VBA中,Range("单元格地址")来表示单元格。在单元格中输入值,直接用=值 即可(字符串两边要加双引用),如果清空则 =""。
再编写一段清空代码:
第四步、测试运行代码
在编写代码时经常要测试是否正确。测试方式是把光标放在代码行的任意位置【下图中“测试按钮”的位置】,点击运行小按钮进行测试;同样清空代码也一样。
第五步、点击按钮执行VBA代码
在Excel中插入的图形、图片、按钮控件都可以执行VBA代码。让它们执行很简单,点击“插入” - “矩形” - “指定宏”
只需要右键菜单中点击指定宏 - 选取编写的宏名称,选择“输入”,添加输入按钮。
同样添加清除按钮:
当然自己可以调整字体的颜色、字体,让其变得更加美观!
此时,通过VBA设置的输入“233”,并可以点击清除!
第六步、保存VBA代码
此时的VBA代码应该是既有输入代码又有清空代码;最后需要保存为“启用宏的工作簿"类型【注意下图中虚线框标注】,VBA代码才能保存下来。
好了!今天的分享就到这里,是不是感觉VBA也没有想象的那么难?
赶快转发、关注吧,更多技巧尽在头条号中!
- ?
关于Excel VBA编程的小技巧
任伊
展开
1、 根据条件删除行
Sub deleteRows(strTable, condition1, condition2)
Dim i, j, iMax, jMax As Long
Dim iicondition1, iicondition2 As Integer
With Worksheets(strTable)
iMax = .UsedRange.Rows.Count
jMax = .UsedRange.Columns.Count
i = 2
Do While i < iMax + 1
iicondition1= .Cells(i, 1)
iicondition2 = .Cells(i, 2)
If (iicondition1= condition1And iicondition2 = condition2) Then
.Rows(i & ":" & i).Delete shift:=xlUp
iMax = iMax - 1
Else
i = i + 1
End If
Loop
End With
End Sub
2、 删除所以的使用range
Worksheets("sheetName").UsedRange.Delete shift:=xlUp
3、打开某指定路径的文件夹对话框
Function GetFileName(ByVal DialogType As MsoFileDialogType, ByVal defaultPath As String) As String
With Application.FileDialog(DialogType)
.Title = "XXXX:"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsm"
.Filters.Add "All Files", "*.*"
.InitialFileName = defaultPath
If .Show = True Then
GetFolderName = .SelectedItems(1)
End If
End With
End Function
4、截取字符段
从右边开始,查找某字符,然后截取其后面的字符串。
xlsPath2 = Right(xlsPath, InStr(StrReverse(xlsPath), "\") - 1)
5、Sharepoint数据的刷新
Worksheets("Sharepoint对应的sheet").Range("A1").ListObject.QueryTable.Refresh BackgroundQuery:=False
6、当前使用的range的取得
.UsedRange ‘对应的range
.UsedRange.Rows.Count ‘对应的行号
.UsedRange.Columns.Count 对应的列号
7、在Excel内部打开另外一个Excel (不显示,隐藏)并读取其数据
Set xlsApp = New Excel.Application
xlsApp.Visible = False
xlsPath = ThisWorkbook.Path
Set xlsWB = xlsApp.Workbooks.Open(xlsPath, Null, ReadOnly)
‘读取/写入对应的sheet
X = xlsWB.worksheets(“xxxx”).cells(i,j)
xlsWB.worksheets(“xxxx”)..Cells(i, j).Formula = "=E” & i
8、计算处理
'如果你的表中有大量的计算单元格,那就需要关闭自动计算,否则慢的要死
‘在VBA开始,设置为手动
'Application.Calculation = xlCalculationManual
'Application.ScreenUpdating = False
‘在VBA开始,设置为自动
'Application.Calculation = xlCalculationAutomatic
'Application.ScreenUpdating = False
注意,还有一种方法是再打开本excel的时候,就设置为手动,对于需要计算的sheet,单独在其数据填充完毕后,执行计算操作。
例如: Worksheets("XXXXX”).Calculate ‘这是效率最高一种方法。当然,你也可以对某些range,单独进行range计算。
9、Range到range的只读拷贝、黏贴
Worksheets("srcSheet").Range(.Cells(1, 1), .Cells(x,y)).Copy
Worksheets("dstSheet").Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
10、Cell内容的替换操作
Worksheets("CostTable").Cells.Replace What:="Original Content", Replacement:="replease Content", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
11、自动填充
Worksheets("xxxx")..Range("D8:F8").AutoFill Destination:=.Range(.Cells(8, 4), .Cells(rMax, 8)), Type:=xlFillDefault
12、获取pivot的使用区域、
Set pvt = Worksheets("xxxx").PivotTables("PivotTable_xxxx")
Set rngTable = pvt.TableRange1
13、刷新pivot
Worksheets("xxxx").PivotTables("PivotTable_xxxx").PivotCache.Refresh
- ?
小白也能看懂的Excel VBA入门教程(一)
闪光的
展开
什么是VBA
Visual Basic for Applications(VBA)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。简单来说VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。
第一个VBA程序
首先要把开发工具调出来,Excel默认情况下是不显示开发工具的
打开vb编辑器,新建模块,并写入代码
Sub test()Range("A1") = "Hello World" '在A1单元格中填写Hello WorldRange("A2") = "我的第一个VBA程序"End Sub
在Excel VBA中,Range对象可能是最常用的对象,Range对象可以是某一单元格、某一单元格区域、某一行、某一列、或者是多个连续或非连续的区域组成的区域。代码中 Range("A1") 就代表A1单元格。而“=”是一个赋值运算符,将右边的值传给左边的变量。
大家学会了吗,其实VBA还是比较简单的。小编准备写一个VBA入门的教程,现在有两种思路,一种是先讲解VB的基本知识,然后在从例子中不断加深理解,这样前期可能相对比较枯燥;另一种是每篇介绍一个例子,讲解一下如何用VBA来解决,从实战中学习,相对来说比较快一点。大家觉得那种更好一点呢,或者有更好的方法,欢迎在下方评论,小编一定会及时回复。。
excel宏编程教程
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并