此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。
昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏的推文,其实还有一些后续的更劲爆的效果,在某些场景上可以有很好的发挥。
几十年来,VBG 宏代码都是攻击者的核心工具。但自从微软开始默认阻止来自互联网的 Office 文件的所有 VBA 宏,这一攻击途径受到了极大的压制。由于攻击面的减少,攻击者必须探索替代的攻击媒介。近期的许多研究表明,LNK 文件已经受到了攻击者的青睐。此外,VSTO(Visual Studio Tools for Office) 文件也成为了重要的攻击媒介。 什么是 VSTO? 微软的 Visual Studio IDE 中提供了一个软件开发工具集 VSTO,通过 VSTO 可以支持在 .NET 中开发
VSTO项目开发完毕完,最终需要分发给用户,需要Excel催化剂用的是Clickonce发布方式,但也面临到部分用户环境要求太高,设置过程太繁锁,而要求有一些简单的安装方式,用打包工具将其打包为一个EXE文件,然后分发给用户安装,这个可以带来很好的安装体验。
前面一种介绍了许多VSTO开发的插件一些功能和零散提到VSTO开发的一些好处,今天在这里来个180大翻脸,开始谈下VSTO开发插件的一些不足。顺便给大家介绍下,一个同样精彩的开发方式,使用Excel-DNA开发自定义函数加载项。
对于专业程序猿来说,查找文档不是个什么难事,但VSTO开发者,多数是VBA开发者转型过来的,VBA开发者一般都是比较业余(笔者也是业余的开发,很幸运得到一位专业程序猿师傅全程陪伴成长)。一些看似很司空见惯的技能,可能很大部分VBA开发者还没掌握到。
多年以来,一直都有攻击者使用恶意宏来传播恶意软件,并且还设计出了各种方法来让这种技术变得更加有效。近期,研究人员观察到了一种更加隐蔽的基于宏的攻击活动,在这个攻击活动中,攻击者会利用宏来搜索用户系统中的特定快捷方式,并利用它们来下载恶意软件。当用户点击了修改后的桌面快捷方式后,下载下来的恶意软件将会被执行。
在今年3月以来,持续关注WPSJS的开发技术,并已开发了两款针对WPS表格和WPS文字的插件,剩下WPS演示未有开发,其中原因为当时WPS演示未有WebShape这个网页控件的接口开放。
VSTO插件开发完成后,鉴于现在WPS用户也不少,很多时候用户没办法用OFFICE软件,只能在WPS环境下办公,VSTO开发的插件,只需增加一句注册表信息,即可让WPS识别到并调用VSTO开发的功能,可能部分功能让WPS使用要考虑WPS是否有相应的API接口,这是后话,本帖给大家粘出代码及程序,让用户双击即可完成,exe封装,无需给用户注册表文件让用户畏惧或其他安全软件报警。
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。 简书原文地址: https://www.jianshu.com/p/4efcee38175a
上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处。
只要保证插件功能不破坏用户原有数据,就算错了,重来一次即可。不破坏原数据,其实最好的方案是用自定义函数实现,如果需要用按钮功能,只需要将生成的新数据写入到新工作表或新区域即可。Excel催化剂大量的功能遵循此原则来处理。
平常我们开发一些插件过程中,肯定不可能一口气把所有功能开发完,或者开发好之后,给到用户手里使用过程中,不出现任何错误问题。
这是Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去Office开发的一些场景,目前提供的一些能力,最后展望一下生态环境建设和未来的发展。
在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA、ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体控件一样,即可完成Ribbon功能区的开发,开发效率极高。
富文本编辑器,一般都是BS架构专利一般,好像百度有一个开源的比较出名,但无奈这些都只能用在JS上,在BS网页端开发上使用。像Winform开发的VSTO,只能羡慕的份。和一般Winform上用的RichText控件,别人BS的富文本编辑器就强大得多。
通常许多的知识都是在知与不知之间,不一定非要很深奥,特别是Excel这样的应用工具层面,明明已经摆在那里,你不知道时,永远地不知道,知道了,简单学习下就已经实现出最终的功能效果。
为何会慢这个问题,可能就没有深入研究过,而笔者用自己不专业的语言表达下原因,是因为VBA或VSTO等代码与Excel交互是用的是COM的通信,这个COM通信非常臃肿,遍历过程中,不断地来回通信,产生了十分低效的性能。
在VSTO开发过程中,因其和普通的Winform开发有点差别,具体细节笔者也说不清楚,大概是VSTO的插件是寄生在Excel中,不属于独立的进程之类的,其异步方法调用时,未能如Winform那样直接用await async异步方法就结束,仍需要再作简单的处理。
在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。
使用Excel催化剂的插入图片的方式,图片已经存储在PictureBox容器内,想导出时,只需在PictureBox容器上取出其Image属性,即可拿到图片,再简单的一个保存为文件的方法即可完成。
【俱乐部领袖】 苏州,苏震巍,俱乐部主席 苏州盛派网络CEO,微软最有价值专家(MVP)、微软 Ignite 技术大会讲师,Senparc.Weixin作者,《微信开发深度解析》等书作者。苏州市人工智能学会理事、“中国HTML5研究小组”成员,姑苏优秀创业人物。 苏州,潘 淳,俱乐部执行主席 Office开发爱好者,VSTO专家,PowerPoint专家,PPT函数式动画理论体系创造人,曾经的爱PPT论坛及PPT教堂创始人,Office开发者联盟发起人。 苏州,王 飞,苏州.NET俱乐部秘书长 苏州协昌环
在Excel催化剂的几大辅助录入功能中(数据验证保护、数据多级联动输入、关键词模糊智能匹配输入)中,用了一些customxmlPart技术来存储配置信息,同时在关键词模糊智能匹配输入中,用了一个VSTO开发才能满足的自定义控件技术,很值得启发,拿出来给大家作一分享。
前一篇文字版文章发出,有几位热心的读者给我作了一些反馈,主要是修改我文章的错误地方,现在此处作一些简单修正,
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
在各大插件中,破解工作表、工作薄密码的功能比比皆是,此篇开源确实有些炒冷饭凑文章的嫌疑,但换个角度,当时笔者开发过程中,找寻相关的代码,也还是花上一些的时间在百度里找了好久,原因如下: 1.大部分能够找到的代码都是VBA的代码 这说明在Excel高级开发群体中,特别是VSTO、COM加载项开发群体中,还是守口如瓶的,仿佛越是高级的开发者,越对自己掌握的“核心”技术保密,希望Excel催化剂这一系列的开源文章对此风气有所好转(在专业程序员圈子里,人家可以越是大神,越是不断地造轮子造福后来者和初级者,并且任性地开源)。 2.VSTO开发的确还是很冷门,没有进入专业开发者的视野中 对于工作表密码破解这些,肯定是OFFICE开发者的专业领域,就算国内不开源,找国外,也没找到多少,所以此篇简单开源,还是有此必要性的。
第一步,创建一个VSTO项目(excel,word,ppt)等操作一样 Public Class ThisAddIn #Region "任务窗格对象" '''
为了更好的体验,重新又生成了一版EasyShu插件专属的修复工具,若在使用EasyShu产品(Excel+PPT两款插件)的读者们可以备一份,比通用性的增加了图片识别和一键完成无需遍历。
图片插入功能,这个是Excel插件的一大刚需,但目前在VBA接口里开发,如果用Shapes.AddPicture方法插入的图片,没法对其添加事件,且图片插入后需等比例调整纵横比例特别麻烦,特别是对于插入的多个图片非统一的纵横尺寸比时。
因插件是使用visualstudio的开发环境开发的,这种Excel插件有别于传统的使用VBA语言开发的Excel插件,需要对用户电脑有一些底层的运行环境的要求。咋看是有些麻烦,但实质是更加安全、友好,用户在环境搭建好的情况下,基本只需双击这样的动作就能打开使用,不需设置宏安全性、宏警告等VBA开发的插件所面对的问题,特别适合企业级别的开发使用。
在VB.net中WinForm+Backgroundworker+StatusStrip范例
在VSTO开发或其他COM技术开发过程中,甚至VBA也是,在和Excel交互中,难免会遇到性能瓶颈问题,COM技术的交互实在太慢,对大量数据读写等操作,耗时太长,容易卡用户界面以为是程序死机等等。
对于笔者这样的数据分析工作者来说,对数据库有较深的掌握,当然少不了对SQL查询的深度使用,如果在编程的世界中,可以复用这样的能力,真的是一件多么令人高兴的事情。
有些插件仅在某个特定场景下才会使用,日常办公过程中,无需开启,只有当使用时再开启即可。
日常办公使用中,对企业数据存储量最大的,要数Excel文件,和各种系统交互最频繁的也是Excel文件。对Excel进行模板设定、二次宏代码开发最多的也是Excel文件。
事件驱动编程,可以让操作变能更丰富,更改事件可能会使事情变得更容易处理。开发者可以靠着各种事件的的触发来设计可以自动执行的 Office 应用,比如可以在工作表中的选择时发生的事件,就是一个常见的应用场景。
为 WPF 或 WinForms 应用程序选择浏览器组件,对于那些搜索基于Chrome的解决方案的人来说,DotNetBrowser[1]和CefSharp[2]是最明显的选择。
为了迎接全民ExcelDNA开发的浪潮的到来,在启动ExcelDNA兼容个人版WPS的众筹项目后,再接再厉,给大家做了个完整的Demo。
在Excel催化剂中,独树一帜地推出了Excel与数据库交互功能,目前仅实现了对Sqlserver的交互,在通用型插件中仅此一家,别无其他。
在VB.net中,List(of string())与List(of List(of string))有什么区别
在Excel开发过程中,大部分时候是和Range单元格区域打交道,在VBA开发中,大家都知道的一点是,不能动不动就去遍历所有单元格,那性能是非常糟糕的,很多时候,是需要把整个单元格区域装入数组中再作处理的。
在C#中,do...while循环是一种控制流语句,它允许代码块重复执行,直到满足指定的条件为止。与while循环不同的是,do...while循环至少会执行一次,然后再检查条件。
在VBA和VSTO项目中,我们很多时候需要访问用户的常用路径如桌面、我的文档、软件配置文件夹等。因为WPSJS项目仍然开放对本地电脑的控制访问能力,所以其也一同提供了一些常用的方法,放到Env对象下面。
许多中国朋友们可能觉得很稀奇,竟然在这个高科技时代,还有相信基督教这种落后思想、信仰的东西。何苦将宝贵的年华岁月投资在这种虚无的、不切实际的追求上,好好努力学习点有用的知识,工作赚钱给自己过上好生活更为实际吧。
最近为WPS信创大比武的决赛,在集中精力开发WPS演示催化剂,一路坑坑哇哇,一个个wps自身的bug不断地冒出,单纯地在QQ群的方式反馈有些零散,也整理下,希望官方看到能重视下,也能让后来者避坑下,遇到了及时止损,另辟蹊径。
在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用。
领取专属 10元无门槛券
手把手带您无忧上云