1、编程环境及编程语言
本教程的编程环境及编程语言如下:
- 编程环境:Win7,Visual Studio 2017,Office 2016
- 编程语言:C#
2 编程步骤
(1)新建一个Excel的外接程序
- 打开Visual Studio 2017,点【文件】→【新建】→【项目】,即出现如下对话框
- 左边选择【Office/SharePoint】,右边选择【Excel 2013和2016 VSTO 外接程序 】,下面的【名称】【位置】【解决方案名称】等均可以按其默认值,然后单击【确定】,至此完成了新建一个Excel的外接程序,程序默认打开ThisAdddIn.cs文件,如下图所示,此时的Excel外接程序尚无任何功能。
(2)完成Excel外接程序的第一个功能
按照下述步骤,完成【当程序运行时,使当前Excel的活动单元格的值变为"VSTO"】。- 在类的声明变量里首先声明一个公有的Excel应用程序对象变量。
public Excel.Application ExceApp;
其中的public表示在当前的类里面是公有的一个声明, Excel.Application与数据类型等类似,此处表示“应用程序类型”,ExceApp相当于自定义的一个变量名(此时是应用程序名),名称可以自己随意定义。
这与VBA的public ExcelApp as Excel.Application是完全对应的。
完成后如下图所示:
- 在程序的启动事件(Startup事件)中加入下列语句:
ExcelApp = Globals.ThisAddIn.Application;
完成后,这个外接程序的Startup事件完整的代码如下:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
ExcelApp = Globals.ThisAddIn.Application;
}
其中的ExcelApp = Globals.ThisAddIn.Application语句就是让对象变量ExcelApp取得Globals.ThisAddIn.Application 的控制权(控制开启的Excel),这与VBA中的Set ExcelApp=Application是意义相同。
- 为当前Excel的活动单元格赋值"VSTO"
同样地,在程序的启动事件(Startup事件)中继续加入下列语句:
ExcelApp.ActiveCell.Value= "VSTO";
如下图所示:
- 按F5键运行程序后,这时程序会打开Excel,默认打开的Excel选中的为第一个工作表的A1单元格,程序已经自动将A1单元格的值赋值为“VSTO”,如下图所示,至此,我们完成了最简单的一个Excel外接程序。
程序的完整代码(ThisAdddIn.cs文件)如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
namespace ExcelAddIn1
//这里是命名空间
{
public partial class ThisAddIn
//这里是类
{
//首先在这里声明公有的Excel应用程序对象变量
public Excel.Application ExcelApp;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
ExcelApp = Globals.ThisAddIn.Application;
ExcelApp.ActiveCell.Value= "VSTO";
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO 生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
本作品采用知识共享署名 4.0 国际许可协议进行许可。