1.首先需要安裝VS,然后把需要的模塊一起安裝.
2.新建項目,VSTO外接程序.
1.png
3.新建好項目之后會生產(chǎn)以下代碼
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
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO 生成的代碼
/// <summary>
/// 設(shè)計器支持所需的方法 - 不要修改
/// 使用代碼編輯器修改此方法的內(nèi)容。
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
這些代碼由項目自動生成,可以現(xiàn)在可以不用管他.
4.現(xiàn)在開始做插件,首先右鍵項目添加新項:選擇office/SharePoint下的功能區(qū)(可視化設(shè)計器)如下圖:
2.jpg
新建好了之后會有一個功能區(qū)給你,然后可以在上面增加各種控件,如下圖:
3.png
然后我們在功能區(qū)點擊右鍵屬性,可以在右邊看到它的各種設(shè)定,如果有需要可以隨意修改,現(xiàn)在我們來新建一個按鈕然后給按鈕添加事件,具體操作如下:
4.png
直接把按鈕拖進去,最后右鍵查看代碼就會跳轉(zhuǎn)到按鈕定義的事件代碼里邊去了.
5.然后我們在里面添加代碼,代碼如下:
//獲取當(dāng)前活動的應(yīng)用程序
Application app1 = Globals.ThisAddIn.Application;
app1.Visible = true;
//獲取當(dāng)前活動的活動頁
_Workbook wb = app1.ActiveWorkbook;
//獲取當(dāng)前的sheet
Worksheet sheet1 = wb.Sheets[1];
// 獲取當(dāng)前頁面A1的值,并修改
Range rng = sheet1.get_Range("A1", Type.Missing);
rng.Value2 = "hello";
由于百度上,官網(wǎng)上的實例代碼全都是新建工作簿的方式修改,所以我這里把代碼修改了下,改為了修改當(dāng)前打開的工作簿的內(nèi)容.
6.最后點啟動,會自動啟動excel,然后新建工作簿,然后會看到以下界面
5.png
然后點擊剛才我們新建的按鈕,A1的值就被修改成了Hello了.
7.一個簡單的Excel插件建立好了之后,還需要給別人的電腦安裝使用才行,這個時候就需要用到VS的發(fā)布功能了,然后我們點擊項目右鍵發(fā)布功能,會彈出一個發(fā)布向?qū)?
6.png
先指定好位置,然后下一步,會彈出個用戶安裝位置,這時我們選最后一個從CD-rom里面安裝:
7.png
下一步,最后點完成,這樣我們就會在目標(biāo)文件夾里面得到1個文件夾2個安裝文件如圖:
8.png
這時就可以把這三個東西復(fù)制給別人用來安裝了,安裝成功后就會出現(xiàn)第5張圖的界面了.
8.最后附上新建的按鈕控件完整代碼:
using System;
using Microsoft.Office.Tools.Ribbon;
using Microsoft.Office.Interop.Excel;
namespace ExcelAddIn1
{
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
//獲取當(dāng)前活動的應(yīng)用程序
Application app1 = Globals.ThisAddIn.Application;
app1.Visible = true;
//獲取當(dāng)前活動的活動頁
_Workbook wb = app1.ActiveWorkbook;
//獲取當(dāng)前的sheet
Worksheet sheet1 = wb.Sheets[1];
// 獲取當(dāng)前頁面A1的值,并修改
Range rng = sheet1.get_Range("A1", Type.Missing);
rng.Value2 = "hello";
}
}
}
純手打記錄,如果有問題可在下方留言.