2014-11-03 114 views
1

我想在excel工作表上添加一個按鈕。 根據互聯網的例子,我試圖做下面的代碼。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不包含按鈕 我應該包括使用按鈕屬性

預先感謝什麼參考。

+0

wrkSheet.Buttons();你可以試試wrkSheet.Buttons; ? – Eric 2014-11-03 08:24:48

+0

工作表沒有按鈕功能。要使用工作表按鈕,我需要包含哪些參考? – user3289230 2014-11-04 12:12:28

回答

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

+0

謝謝你的回覆。我包括Microsoft.Office.Tools.Excel.v4.0.Utilities.dll,但我找不到Microsoft.Office.Tools.Excel.Controls。我不知道我錯過了什麼。 – user3289230 2014-11-04 12:22:40

+0

我找到了!對不起,我只是失明。謝謝! – user3289230 2014-11-04 12:31:26

+0

OH。我找不到worksheet.Controls ...我需要包含哪些參考?我將工作表聲明爲Microsoft.Office.Interop.Excel.Worksheet。 – user3289230 2014-11-04 12:45:19

0

使用Lesley.Oakey的方法需要您使用Microsoft的VSTO extension methods是。 Tools.Office.Excel。

如果您不使用它們,那麼您將無法訪問Worksheet.Controls屬性。

最好只使用Worksheet.Shapes容器並添加一個新形狀。有一個關於這個偉大的帖子在這裏:

Add excel vba code to button using c#