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