zoukankan      html  css  js  c++  java
  • word2007插件开发经验备忘1如何开发word插件

    最近做了word2007的插件开发(VBA开发)。虽然还没有完全写完,但是感觉有必要写一些东西了,于是就记录下来....


    office的开发分为程序级开发和文档级开发,程序集开发的典型代表就是传说中的插件开发(AddIn)。


    具体如何在VS中建立word的插件就是.........

     主要是有一个ThisAddIn的类,这个类就代表了这个插件,主要的是两个函数:private void ThisAddIn_Startup(object sender, System.EventArgs e) 和 private void ThisAddIn_Shutdown(object sender, System.EventArgs e)。


     从名字上都能猜出这函数是do什么的了.....

    下面有两个基本任务:
     1,在word程序的上面菜单“Add-Ins”里面增加一个选项,并且增加必要的按钮。这个部分叫做Ribbon开发。具体的详情在网络上有n多,也很简单。主要就是想办法让AddIn启动,我这里在里面增加了一个toggleButton按钮,这个按钮和button区别是这个按钮对选中的状态有显示的不同

    代码
    namespace ReviewHelperAddIn
    {
    public partial class ReviewHelperRibbon : OfficeRibbon
    {
    public ReviewHelperRibbon()
    {
    InitializeComponent();
    }

    private void ReviewHelperRibbon_Load(object sender, RibbonUIEventArgs e)
    {

    }

    private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    {
    Globals.ThisAddIn.TaskPane1.Visible
    = ((RibbonToggleButton)sender).Checked;
    }
    }
    }

    这里面的TaskPane1是我AddIn操作的面板,稍后会提到。

    Globals.ThisAddIn.TaskPane1.Visible = ((RibbonToggleButton)sender).Checked;这句的作用是当按钮按下的时候,面板TaskPane1就从word程序中显示出来。

    2,开发用户控件mainControl。

    mainControl是我们使用这个AddIn的时候使用的各种控件的集合类,这个控件是add- UserControl 变来的。当然我们设计控件的话,主要的操作也是要设计这个东东。

    好了,于是有人就提醒了,TaskPane1,TaskPane1...  是拉是拉...TaskPane1简单来说就是承载用户控件到AddIn的一个Tools.CustomTaskPane 的类,把TaskPane 和 mainControl结合一起的关键就是:this.taskPane1 = this.CustomTaskPanes.Add(mainControl, "ReviewHelper");

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml.Linq;
    using Word = Microsoft.Office.Interop.Word;
    using Office = Microsoft.Office.Core;
    using Tools = Microsoft.Office.Tools;

    namespace ReviewHelperAddIn
    {
    public partial class ThisAddIn
    {
    /// <summary>
    /// The first one task pane
    /// </summary>
    private Tools.CustomTaskPane taskPane1;

    public Tools.CustomTaskPane TaskPane1
    {
    get { return taskPane1; }
    }

    private MainControl mainControl;
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
    this.mainControl = new MainControl();
    this.taskPane1 = this.CustomTaskPanes.Add(mainControl, "ReviewHelper");
    taskPane1.VisibleChanged
    += new EventHandler(taskPane1_VisibleChanged);
    }

    private void taskPane1_VisibleChanged(object sender, System.EventArgs e)
    {
    Globals.Ribbons.ReviewHelperRibbon.toggleButton1.Checked
    = taskPane1.Visible;
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {

    }

    另外还要注意这句:Globals.Ribbons.ReviewHelperRibbon.toggleButton1.Checked = taskPane1.Visible;

    和前面那个Ribbon开发句子相对应....

    好了,这下基本的框架就完成了,build并调试就会启动一个word,并且把插件的安装到这个word里面去了...

     

    实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”

    本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    K近邻法(KNN)原理小结
    scikit-learn决策树算法类库使用小结
    朴素贝叶斯算法原理小结
    scikit-learn 支持向量机算法库使用小结
    Socket原理与编程基础
    实时获取股票信息API
    微信内部浏览器私有接口
    外汇哦,你懂的。
    股票数据源-股票代码和名称数据格式
    用Simple Html Dom Parser 获取中国银行汇率
  • 原文地址:https://www.cnblogs.com/yjf512/p/1864399.html
Copyright © 2011-2022 走看看