2017-02-07 7 views
0

Предположим, что у вас есть надстройка Excel VSTO, которая создает элемент управления. Есть ли способ заставить этот элемент управления работать в экземпляре Excel, который не имеет надстройки?Элементы управления, добавленные VSTO без надстройки

Упрощение задачи: надстройка создает кнопку ..

private void Sheet1_Startup(object sender, System.EventArgs e) 
{ 
    var button = this.Controls.AddButton(10, 10, 50, 50, "My Button"); 
    button.Text = "My Button"; 
    button.Click += new EventHandler(button_Click); 
} 

void button_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("I was clicked!"); 
} 

документ затем сохраняется с этой кнопкой и по электронной почте другому пользователю. Когда другой пользователь открывает документ и нажимает на эту кнопку, ничего не происходит.

Как заставить кнопку работать на компьютере другого пользователя?

+0

VSTO Надстройка не может быть отправлена ​​как часть файла Excel. Вам необходимо установить эту надстройку на всех компьютерах, где вам нужно выполнить эту функцию. –

+0

Тогда, возможно, есть способ превратить книгу в книгу макросов и вставить кнопку с ref в макрос? –

+0

На самом деле ... нашел это повторное добавление макроса, используя vsto: http://stackoverflow.com/a/15201483/2043621 –

ответ

0

Я разрабатываю на Word, Excel не, но, как я понимаю, ваши варианты:

  1. Создание документа/шаблона уровня VSTO Add-In. Каждая рабочая книга, созданная на основе шаблона (xltm), может иметь одну и ту же кнопку, и она может вызывать макрос или просто запускать код. Это довольно просто, но ваш получатель также должен иметь надстройку.
  2. По существу то же, что и # 1, но это уровень приложения, поэтому его все еще нужно устанавливать на компьютеры получателя, но кнопка всегда есть, им не нужно делать это самостоятельно. Вы можете условно показать это, если хотите только в определенных книгах.
  3. Создайте макрос в рабочей книге, сохраните его и удалите настройки VSTO из книги и сообщите получателям, чтобы они запускали макрос. Они могут добавить кнопку для ее запуска на вкладке пользовательской ленты, но вы не можете создать кнопку автоматически, потому что изменение ленты через код не поддерживается. Он также доступен для всех документов, поэтому он будет отображаться в каждом документе excel в зависимости от того, как он создан (вы хотите сделать его в эквиваленте Excel шаблона Normal.dotm). Они не могут заставить его появляться только иногда.
  4. Это очень похоже на # 3, но способ доставки макроса может иметь для вас больше смысла. У Word есть способ создать макрос в документе и поместить его в папку автозагрузки, и все документы, открытые этим пользователем в этой системе, будут доступны для макроса. Excel имеет нечто похожее, personal workbook. Вероятно, вы можете найти способ предоставить эту личную книгу своим получателям с уже включенным макросом. Им все равно нужно будет создавать любые кнопки ленты.

Похоже, вы действительно не хотите, чтобы ваши пользователи имели надстройку, поэтому # 3 или # 4 выглядят как лучшие варианты.