相信大家或多或少,
都曾经觉得做PPT有些过程太繁琐,
如果自己需要的设计能够一键生成那该多爽。
本期就以下面这个封面生成器为案例,
我觉得一个PPT插件它的目标一定是:
通过简单的操作,
帮助PPT完成复杂或者繁琐的任务。
PPT插件类型
从类型上看PPT插件分为三种:
第一种是VBA插件,
它是直接在PPT里点出开发工具,
使用VB语言编写的,
我以前做的配色生成器,
就属于这种类型。
第二种是联网插件,
官方名字叫Office Add-in。
它基本不涉及在本地设备中运行的代码,
功能都放在网络上,
PPT只放一张皮。
在插入的【获取加载项】中能找到这类插件,
比如以前介绍过的pexels插件就属于这类,
它能够直接在PPT里搜图。
第三种是COM插件,
它是遵循一定规范编写的程序,
可以在本地设备中运行,
以便给PPT提供额外的功能,
这也是本期视频介绍的插件类型。
PPT插件技术翻译
让我们再来回顾一下目标:
插件是希望通过简单的操作
帮助PPT完成复杂或者繁琐的任务。
这里介绍一些工具,
可以帮助我们实现这个目标。
首先Visual Studio是一个集成开发环境,
它能帮助我们简便地编辑代码,
建立界面设计和代码的联系。
里面的VSTO工具,
Visual Studio Tools for Office,
专门用来帮助制作Office插件,
当然也包括PPT插件。
最后,
复杂或者繁琐的任务怎么来做,
你需要讲给软件听,
并且能让它听懂,
它能听懂的语言是VB或者C#。
说到这里,
从技术的角度让我们把目标翻译一下:
在集成开发环境Visual Studio中,
借助VSTO工具包,
使用C#语言,
指挥PPT完成某些任务。
HEIP插件设计
先说VS(Visual Studio)的安装,
要记住要勾选Office/SharePoint开发工具集,
这就我们刚才说的VSTO。
安装完成后就可以创建项目了,
在【搜索模板】中直接输入VSTO,
找到PowerPoint VSTO外接程序并创建。
这些是软件自动生成的代码。
接下来设计一下界面,
在解决方案上右键添加【新建项】,
选择【可视化设计器】,
出来了一个叫Ribbon的东西,
这其实就是PPT里的一个菜单。
左侧工具箱中拖入一个Button。
把名字改一下,
再把ControlSize从Regular切换为Large。
并在Image属性中点击右侧的三个小点,
导入本地图片作为按钮图标。
这就完成了一个简单的界面设计。
如果这个时候我们点击启动,
VS会自动打开PPT,
PPT菜单中会出现我们刚刚做的界面。
回到VS点击停止调试,
PPT会自动关闭。
目前这个界面只是一张皮,
我们需要几行代码让它和打开的PPT产生联系。
双击Ribbon进入代码界面,
顶上的using语句,
代表程序需要用到哪些命名空间,
因为我们需要操作PPT,
所以这里得添加一句:
using Microsoft.Office.Interop.PowerPoint;
再加一句:
using Microsoft.Office.Core;
我们可以用简短的单词,
比如PowerPoint替代长串的Microsoft.Office.Interop.PowerPoint。
然后在 Ribbon1类的第1行,
声明一个PPT应用程序PowerPoint.Application变量命名为app。
在Ribbon1的Load事件中添加语句:
app = Globals.ThisAddIn.Application
让插件一打开就获取目前PPT的控制权。
通过这么几行代码,
真正了建立插件和PPT的联系。
接下来就可以给PPT安排任务了:
回到Ribbon的设计界面双击按钮,
进入它的单击事件。
告诉它:
一点击就先获取一下页面目前的尺寸
然后让选中的图片铺满屏幕。
再插入一个全屏矩形,
随机生成一个比较暗的填充色。
把它填充为半透明。
再插入一个文本框,
写上白色大号文字,
让它处于页面中心。
以上任务都不涉及什么算法,
关键就是找到C#指挥PPT的语句,
因为PowerPoint是一个成熟的功能极多的应用程序,
所以指挥它的过程中必然会用到很多长名字的属性和方法。
我把代码贴在这里,
感兴趣的可以看看。
using Microsoft.Office.Tools.Ribbon;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
namespace HEIP
{
public partial class Ribbon1
{
PowerPoint.Application app;
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
app = Globals.ThisAddIn.Application;
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
float w = app.ActivePresentation.PageSetup.SlideWidth;
float h = app.ActivePresentation.PageSetup.SlideHeight;
PowerPoint.Slide slide = app.ActiveWindow.View.Slide;
PowerPoint.Selection sel = app.ActiveWindow.Selection;
PowerPoint.ShapeRange range = sel.ShapeRange;
range[1].LockAspectRatio = Office.MsoTriState.msoFalse;
range[1].Width = w;
range[1].Height = h;
range[1].Left = 0;
range[1].Top = 0;
PowerPoint.Shape shape = slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, 0, 0, w, h);
Random rd = new Random();
int r = rd.Next(0, 30);
int g = rd.Next(10, 50);
int b = rd.Next(20, 70);
shape.Fill.ForeColor.RGB = r+g*256+b*256*256;
shape.Fill.Transparency = 0.4F;
shape.Line.Visible = Office.MsoTriState.msoFalse;
PowerPoint.Shape txb = slide.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, w / 4, h / 3, w / 2, h / 3);
txb.TextFrame.TextRange.Text = "LAOHEI";
txb.TextFrame2.TextRange.Font.Size = 96;
txb.TextFrame2.TextRange.Font.NameFarEast = "微软雅黑";
txb.TextFrame2.TextRange.Font.Name = "微软雅黑";
txb.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = 16777215;
txb.TextFrame.TextRange.ParagraphFormat.Alignment = PowerPoint.PpParagraphAlignment.ppAlignCenter;
txb.TextFrame.VerticalAnchor = Office.MsoVerticalAnchor.msoAnchorMiddle;
}
}
}
我将编好的程序封装好了,
换一台电脑打开PPT,
菜单栏目前是初始状态。
安装插件之后重启PPT,
这里出现了HEIP可直接使用。
安装文件已打包,
关注头条号【黑白间设计】,私信【HEIP】即可获取。
注意是:黑(HEI)~~P,不是HELP噢。
如若转载,请注明出处:https://www.daxuejiayuan.com/17955.html