C # Excel создать кнопку на листе Excel

1

Я пытаюсь добавить кнопку на листе 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

Заранее спасибо.

  • 0
    wrkSheet.Buttons (); Можете ли вы попробовать wrkSheet.Buttons; ?
  • 0
    Рабочий лист не имеет функции кнопок. Чтобы использовать кнопки рабочего листа, какую ссылку мне нужно включить?
Теги:
excel

2 ответа

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. Интересно, чего мне не хватает.
  • 0
    Я нашел это! извини, я просто слепой Спасибо!
Показать ещё 4 комментария
0

Используя метод Lesley.Oakey, вы должны использовать методы расширения VSTO в Microsoft.Tools.Office.Excel.

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

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

Добавьте код excel vba к кнопке, используя С#

Ещё вопросы

Сообщество Overcoder
Наверх
Меню