Jac*_*k W 8 c# vsto ribbon ms-office excel-addins
好的,所以我得到了自动生成的主要AddIn(附件1),还有我的功能区(附件2),我想从该功能区访问当前活动的Excel工作表.但System.Windows.Forms.Application不包含定义ActiveSheet.
using System;
using System.IO;
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;
using System.Windows.Forms;
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 generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
public void doStuff()
{
}
#endregion
}
}
Run Code Online (Sandbox Code Playgroud)
附件2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
using System.Windows.Forms;
namespace ExcelAddIn1
{
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MessageBox.Show("Test");
Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
Excel.Range firstRow = activeWorksheet.get_Range("A1");
firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
Excel.Range newFirstRow = activeWorksheet.get_Range("A1");
newFirstRow.Value2 = "This text was added by using code";
}
}
}
Run Code Online (Sandbox Code Playgroud)
Sli*_*SFT 11
您需要IRibbonControl.Context从RibbonControlEventArgs参数中获取.这个上下文代表了Excel.Window.然后,您可以访问活动Window.Application属性.
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Excel.Window window = e.Control.Context;
MessageBox.Show("Test");
Excel.Worksheet activeWorksheet = ((Excel.Worksheet)window.Application.ActiveSheet);
Excel.Range firstRow = activeWorksheet.get_Range("A1");
firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
Excel.Range newFirstRow = activeWorksheet.get_Range("A1");
newFirstRow.Value2 = "This text was added by using code";
}
Run Code Online (Sandbox Code Playgroud)
如果这是VSTO Excel加载项,也许你应该使用:
Globals.ThisAddIn.Application.ActiveSheet
Run Code Online (Sandbox Code Playgroud)
此致,Jörg
| 归档时间: |
|
| 查看次数: |
7971 次 |
| 最近记录: |