繁体   English   中英

在VSTO Excel加载项中选择特定的工作表

[英]Selecting a specific sheet in VSTO Excel Add-In

我正在尝试使用我的excel加载项选择特定的工作表(按名称或索引),但无济于事。

我的插件文件ThisAddIn.cs具有:

public Excel.Workbook GetActiveWorkbook()
{
    return (Excel.Workbook)Application.ActiveWorkbook;
}

我的Ribbon1.cs具有:

namespace Test3
{
    public partial class Ribbon1
    {
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {
            Debug.WriteLine("Hello");
            Workbook currentwb = Globals.ThisAddIn.GetActiveWorkbook();
            Worksheet scratch = currentwb.Worksheets.Item[1] as Worksheet; // Error blocks here
            if (scratch == null)
                return;
            // Worksheet scratch = currentwb.Worksheets["Sheets1"];
            scratch.Range["A1"].Value = "Hello";
        }
    }
}

但是我得到了System.NullReferenceException: 'Object reference not set to an instance of an object.'

我是c#的新手(来自Python),并且对为什么它不起作用感到非常困惑。 任何帮助将不胜感激。

问题是我试图在加载Workbook实例之前加载它。 换句话说,尝试在Ribbon Load抢占实例为时过早。 抓住ButtonClick事件上的实例很好!

尝试

Excel.Application ExApp = Globals.ThisAddIn.Application as Excel.Application;

            Worksheet sheet = Globals.Factory.GetVstoObject(ExApp.ActiveWorkbook.Worksheets[1]);
            Worksheet vsheet = Globals.Factory.GetVstoObject(ExApp.ActiveWorkbook.Worksheets[2]);

            sheet.Cells[1, 1] = "A1";
vsheet.Cells[1, 1] = "A1 from second sheet";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM