Книга Excel, созданная с помощью VSTO, не выполняет кнопки после сохранения

Поэтому я сделал следующие шаги:

  1. Подготовлена ​​надстройка Excel VSTO, в которой надстройка создает два листа Excel и размещает на этих двух листах несколько кнопок. Каждая кнопка может иметь тривиальное или нетривиальное назначение действия. Например, button1 просто увеличит размер шрифта, а button2 будет использовать код VSTO C# для инициализации нескольких классов, обработки данных и печати вывода на лист. Все это работает при запуске Excel из Visual Studio.
  2. Затем я сохраняю книгу (пробовал также сохранить как «с включенным макросом»).
  3. Закрыть Эксель. Закройте Визуал Студию.
  4. Снова откройте книгу с помощью Excel.
  5. Нажмите на любую кнопку, и ничего не произойдет -> как будто к кнопкам нет никакой функциональности.

Это известное ограничение или я делаю что-то не так?

Моя цель — использовать надстройку VSTO для создания функционального листа (добавление форматирования, добавление кнопок и т. д.), который впоследствии любой сможет открыть без фактической установки надстройки. Теперь я сомневаюсь, что это вообще возможно.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Действия для кнопок являются частью надстройки, а не листа.

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

Вам нужна надстройка, чтобы искать кнопки при открытии документа, а затем прикреплять к этому моменту обработчики событий.

Хорошо, без надстройки другие пользователи не смогут использовать кнопки. Верно? Есть ли другой способ создать книгу со всеми событиями/кнопками, которая не требует от пользователя ничего устанавливать? Кроме написания кода VBA Marco?

skrat 29.08.2024 08:04

Да, но тогда вам понадобятся кнопки для запуска макроса VBA, а не кода C# VSTO. Если вы хотите использовать VSTO, возможно, вы захотите использовать настройки на уровне документа Learn.microsoft.com/en-us/previous-versions/visualstudio/…. Если вы не настроены на технологию, я бы посоветовал рассмотреть Office.js.

Peter Dongan 29.08.2024 08:40

Я, конечно, не ограничиваюсь VSTO. Мне действительно все равно, что я использую. Все, что я хочу, это (пусть это будет использование Python, C++, C#,...) создать книгу с двумя листами и несколькими кнопками формы (или кнопками ActiveX, если они работают) на этих листах. Я бы предпочел, чтобы пользователю не нужно было ничего устанавливать, но я также готов принять простую установку, например. Установка ВСТО. Похоже, вы много знаете об этой теме. Могу я спросить, что бы вы порекомендовали? Чего я не хочу, так это использовать вкладку разработчика Excel и писать там макрос VBA — я считаю это ужасным.

skrat 29.08.2024 08:59

В любом случае, я принимаю ваш ответ, потому что он отвечает на мою первоначальную проблему.

skrat 29.08.2024 09:00

Я бы определенно рекомендовал Office.js вместо VSTO, если он поддерживает нужные вам интерактивные функции. Вы также можете в первую очередь рассмотреть возможность использования C# и OpenXML SDK для добавления кнопок. Это позволяет редактировать документ напрямую, не взаимодействуя с экземпляром Excel.

Peter Dongan 29.08.2024 09:11

Другие вопросы по теме