2014-11-03 2 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

+0

Рабочий лист не имеет функции кнопок. Чтобы использовать кнопки рабочего листа, какую ссылку мне нужно включить? – user3289230

ответ

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

+0

Я нашел его! жаль, что я просто слепой. Спасибо! – user3289230

+0

OH. Я не могу найти рабочий лист. Контроль ... Какую ссылку мне нужно включить? Я объявляю рабочий лист как Microsoft.Office.Interop.Excel.Worksheet. – user3289230

0

Использование метода Lesley.Oakey требует от вас быть с помощью VSTO extension methods в Microsoft. Tools.Office.Excel.

Если вы не используете их, значит, вы не сможете получить доступ к свойству Worksheet.Controls.

Лучше всего использовать Worksheet.Shapes контейнер и добавить новую форму. Там отличный пост об этом здесь:

Add excel vba code to button using c#

Смежные вопросы