我正在尝试在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属性
提前致谢。
答案 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容器并添加新形状。这里有一个很棒的帖子: