在Microsoft Word中,Node是如何替代宏的
最近的30年来,宏(macros)成为了Microsoft Word的关键卖点。WordBASIC最初是在1989年引入的,它能够让受过极少培训的打字员都能进行计算机编程,从而简化他们的日常工作。
\\
在那个时代,竞争非常激烈。除了Word,还有WordStar和后来居上的WordPerfect,它们都有自己的宏编程语言。随着竞争的持续,业务用户的需求越来越多,更新也变得非常频繁。
\\
在上世纪90年代末期,发生了一些有意思的事情。Microsoft创建了Visual Basic for Applications(VBA),这个语言具有(有限的)OOP能力以及与其相匹配的IDE,用以替代WordBASIC,它所创建的并不仅仅是另外一个嵌入式组件。最初的时候,Microsoft预期将这项技术用在所有的MS Office产品之中,随后他们意识到可以对这项技术进行许可认证。很快,众多的公司都提供了对VBA的支持,包括ArcGIS、AutoCAD、SolidWorks、CorelDraw,甚至还有WordPerfect。
\\
在世纪之交不久,人们就看到了宏的大幅下滑。所谓的“宏病毒”造成了严重的破坏。因为它们隐藏在Word文档中,所以病毒扫描器很难发现它们。
\\
作为回应,Microsoft锁定了VBA编程接口。它依然很强大,但是关闭了安全功能,所以使用它实际上很有挑战性。大多数的病毒扫描器会拒绝所有通过email共享的带有宏的文档。
\\
尽管它处于下滑的状态之中,Visual Basic for Applications依然还是存在的。最新的7.1版本是在2013年发布的,并且从2010年开始它就有64位版本了。但是随着基于Web的字处理器变得越来越流行,VBA也似乎走入了死胡同。它基于上世纪90年代的COM技术,并没有可行的方案将其放到Web应用中。随着人们逐渐将语言从BASIC替换为JavaScript,再创建一个“Web版本的VBA”显得就有点不合时宜了。
\\
.NET与Office
\\
为了让人们放弃过时的VBA技术,Microsoft还创建过Visual Studio Tools for Office(VSTO)。这个开发工具集和库不仅能够创建Office插件,还允许独立的应用操纵Office文档。
\\
至少在理论上是这样的。但实际上,在这两方面VSTO都失败了。
\\
普通的程序员并不想要安装Visual Studio并从头开始创建Office插件。他们想要录制一个宏,然后对其修改以满足他们的需求。培训学习的成本从“编辑直到可用为止”变成了完全从头开始,这是难以承受的。
\\
另外,还有版本的问题。VBA风格的宏会存储为纯文本,这意味着只要你不使用只有新版本才有的特性的话,你所编写的代码能够用到任意版本的Office之中。而编写VSTO插件时,你需要针对特定的Office版本进行编程。这意味着开发人员只能使用公司中最老的版本。
\\
另一方面,专业的开发人员对插件基本上没有太大的兴趣。他们希望构建使用和/或生成文档的服务器。VSTO基于COM的自动化,这意味着在做实际的工作之前,首先要有Word或Excel的一个副本。对于Web站点的每个用户,都要运行一个重量级桌面应用的副本,这种做法显然是站不住脚的。
\\
与VBA类似,我们实际上无法在基于浏览器的Web处理器上使用VSTO。
\\
使用Node构建Office的Add-In
\\
如我们前文所述,JavaScript现在已经成了通用的编程语言。业余爱好者(以及类似的专业开发人员)不想要或不喜欢重量级的IDE,如Eclipse或Visual Studio,于是Node变成了他们的开发平台。所以,Microsoft选择这些工具来构建Office add-in,我们也不应该感到意外。
\\
首先,我们需要安装Node。然后从命令行中,运行下面的两条命令:
\\
\npm install -g tsd bower gulp yo generator-office \yo office\
\\
yeoman generator会询问我们想要构建哪种类型的add-in(ribbon command、 task pane等)、支持哪些Office产品以及想要使用Angular还是纯HTML/JavaScript进行构建。接下来需要执行的命令就是搭建本地的服务器,用来托管你的add-in。
\\
gulp serve-static
\\
这是用于基本的冒烟测试的,对于实际环境来说,你需要在Web上运行Office。在打开一个空文档之后,可以上传add-in的manifest,然后查看它的实际效果。
\\
你可能会问,既然要上传manifest,为什么还要启动本地服务器呢?这是因为manifest在你的电脑同时运行Office的时候,它就允许浏览器从电脑上加载add-in。在实践中,这意味着你可以修改add-in,点击浏览器的刷新按钮,就能马上看到实际的效果,不需要在每次变化之后都重新上传add-in。
\\
因为这是一个Web应用,所以可以使用浏览器内置的调试工具进行调试。
\\
要看实际效果的话,可以观看Harrison Shapley的Build Office Add-ins with Any Code Editor and Office Online演示。
\\
查看英文原文:How Node Replaced Macros in Microsoft Word
在Microsoft Word中,Node是如何替代宏的相关推荐
- word 图片导入不翻转_如何在Microsoft Word中翻转图片
word 图片导入不翻转 While Microsoft Word isn't known for its photo-editing abilities, it does have some bas ...
- Microsoft Word中编辑Visio图形的方法
本文主要介绍在 Microsoft Word 中编辑 Visio 图形的具体方法. 在 Word 中修改 Visio 图形时,经常遇到双击 Visio 图形后,Visio 内容太小不便于修改的情况,而 ...
- 微软输入法的m图标怎么设置_如何在Microsoft Word中获取“ L”形的格式设置图标?...
微软输入法的m图标怎么设置 Each of us has a preferred layout and setup when we are working with Microsoft Word, b ...
- Microsoft Word中自动编号有参考文献识别不到的问题
Microsoft Word中自动编号有参考文献识别不到的问题 问题描述 原因 解决方案 问题描述 如下图所示,在给图中3条参考文献自动编号时,第2条文献识别有误,未进行编号. 原因 第2条文献中第一 ...
- java 合并和拆分单元格_如何在Microsoft Word中合并和拆分表和单元格
java 合并和拆分单元格 You can easily merge and split cells in Microsoft Word to make your tables more intere ...
- word中画网格立方体_如何在Microsoft Word中制作点网格纸模板
word中画网格立方体 From bulleted journals for personal planning, to graph paper for designing complex mathe ...
- 如何从Microsoft Word中的图片中删除背景
Every so often, you might want to remove the background from an image in your Word document, leaving ...
- 微软word开机自启动_如何在Microsoft Word中创建自定义封面
微软word开机自启动 A great cover page draws in readers. If you use Microsoft Word, you're in luck, because ...
- 如何在Microsoft Word中插入PDF文档?
文章来源:https://www.reneelab.com.cn/how-to-insert-pdf-into-word.html 目录 一.在Windows上将PDF插入到Word文档的方法 方法一 ...
- 如何在Microsoft Word中添加一个悬挂缩进
A hanging indent is used to position the first line of each paragraph against the margin, with each ...
最新文章
- UWP 显示图片到Image控件
- ASP.NET Core 2.0 : 图说管道,唐僧扫塔的故事
- 【转载保存】索引文件锁LockFactory
- 手机站的view.php,织梦网站文章内容页动态地址plus/view.php路径修改
- Java BigInteger类| bitCount()方法与示例
- java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...
- 取 java 程序运行的路径_获取Java程序运行的路径 | 获取当前jar包的路径
- Quartus 与modelSim联合仿真常见错误以及系统任务$readmemb和$readmemh解释
- python中布尔变量的值为_python 布尔操作实现代码 python是如何定义并使用变量的...
- 字符编码(1)——Unicode,utf-8
- Linux---字符设备驱动程序设计
- 直接插入排序和冒泡排序有什么区别 直接插入排序和冒泡排序有哪些不同
- 使用putty进行Linux串口连接
- Maui Shell 来了,开启 Linux 桌面新时代!
- 浪潮服务器如何安装win7系统,WIN7旗舰版操作系统中浪潮ERP-GS5.2安装说明.doc
- iconfont多色图标的使用方法
- [渝粤教育] 天水师范学院 地质与地貌学 参考 资料
- 林氏物语.朝花夕拾之恨逢卿晚
- IDEA安装vue开发插件
- 64位系统和32位系统的区别