c#excel在Excel工作表上创建一个按钮

时间:2014-11-03 08:15:38

标签: c# excel

我正在尝试在Excel工作表上添加一个按钮。 根据互联网上的例子,我试着做以下代码。

  using Excel = Microsoft.Office.Interop.Excel;
  using VBIDE = Microsoft.Vbe.Interop;


 private static void excelAddButtonWithVBA()
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlBook = xlApp.Workbooks.Open(@"PATH_TO_EXCEL_FILE");
Excel.Worksheet wrkSheet = xlBook.Worksheets[1];
Excel.Range range;

try
{
    //set range for insert cell
    range = wrkSheet.get_Range("A1:A1");

    //insert the dropdown into the cell
    Excel.Buttons xlButtons = wrkSheet.Buttons();
    Excel.Button xlButton = xlButtons.Add((double)range.Left, (double)range.Top, (double)range.Width, (double)range.Height);

    //set the name of the new button
    xlButton.Name = "btnDoSomething";
    xlButton.Text = "Click me!";
    xlButton.OnAction = "btnDoSomething_Click";

    buttonMacro(xlButton.Name, xlApp, xlBook, wrkSheet);
}
catch (Exception ex)
{
    Debug.WriteLine(ex.Message);
}
xlApp.Visible = true;

}

但它一直说Excel不包含Button 我应该包含什么参考来使用Button属性

提前致谢。

2 个答案:

答案 0 :(得分:2)

据我所知,Excel.Buttons和Excel.Button不存在。相反,建议正确的引用是Microsoft.Office.Tools.Excel.Controls.Button(而不是正在使用的Microsoft.Office.Interop.Excel)。此示例来自以下来源

    Excel.Application xlApp = new Excel.Application();
    Excel.Workbook xlBook = xlApp.Workbooks.Open(@"PATH_TO_EXCEL_FILE");
    Excel.Worksheet worksheet = xlBook.Worksheets[1];

    Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;
    if (selection != null)
    {
        Microsoft.Office.Tools.Excel.Controls.Button button =
            new Microsoft.Office.Tools.Excel.Controls.Button();
        worksheet.Controls.AddControl(button, selection, "Button");
    }

来源:在应用程序级项目中http://msdn.microsoft.com/en-us/library/cc442817.aspx

在运行时向工作表添加控件

答案 1 :(得分:0)

使用Lesley.Oakey的方法要求您使用Microsoft.Tools.Office.Excel中的VSTO extension methods

如果您不使用它们,那么您将无法访问Worksheet.Controls属性。

最好只使用Worksheet.Shapes容器并添加新形状。这里有一个很棒的帖子:

Add excel vba code to button using c#