Определите версию Office в VSTO 4 до этого.

Я хотел бы определить версию Office / Excel в дополнении VSTO при CreateRibbonExtensibilityObject() в Addin. Я столкнулся с проблемой с этим и столкнулся:

  • this.Application имеет значение null , он еще не установлен VSTO в это время.
  • ThisAddIn_Startup(..) вызывается после CreateRibbonExtensibilityObject() .

this.Application.Version пока недоступен, поскольку Addin пока еще не инициализирован. Есть ли способ определить версию Excel ( 12, 14 или 15 ) в то время, когда среда выполнения CreateRibbonExtensibilityObject() вызывает CreateRibbonExtensibilityObject() в Addin?

ОБНОВИТЬ

Выяснив, что ItemProvider был создан, я использовал следующее, чтобы получить основную офисную версию.

 FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance); uint officeVersion = (uint)temp.GetValue(this.ItemProvider); 

Я тоже принимаю ответ SliverNinja.

Вы можете использовать System.Diagnostics для доступа к excel.exe запущенному процессу Office ( excel.exe ), захватить путь к имени файла процесса ( MainModule ), а затем использовать FileInfoVersion для определения основной версии продукта .

 int majorVersion = FileVersionInfo.GetVersionInfo(Process.GetCurrentProcess().MainModule.FileName).ProductMajorPart; 

Я использую FileVersionInfo в MainModule . Я надеюсь, что это сохранит доступ к файлам для извлечения информации о версии.

 int majorVersion = Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductMajorPart; 
  • Какие типы файлов связаны с книгой Excel, которая имеет формат файла со значением 63?
  • Пробные периоды / срок действия проектов VSTO VB?
  • VSTO 2012: обратная совместимость
  • Создание файла .msi для Excel Addin с Visual Studio
  • Как подключиться к процессу приложений VSTO Excel для отладки?
  • End Sub после закрытия окна для причин сбоя Excel, почему?
  • Получить Hashcode для книги Excel в VSTO для включения кнопок на основе состояния
  • Получить последнюю ячейку (столбец, строку) объекта диапазона Excel
  • Ошибка Excel VSTO надстройки - не удалось создать домен приложения
  • Получить данные из объекта ListObject, не созданного из кода
  • Как очистить определенный диапазон ячеек в VSTO excel с помощью C #
  • Interesting Posts

    Как перебрать N столбцов, когда N – это номер, введенный пользователем? VBA

    Улучшение производительности или установки значений в ячейках через VBA

    Сортировка списка по группам различного количества строк

    Автоматизировать поиск в Google строк Excel?

    Копирование и вставка активного столбца без изменения форматов ячеек

    сеанс не сохраняет значение в первый раз

    Разделите вкладку «Разбор» в VBA

    разделение данных с одного листа excel на несколько файлов excel с использованием MATLAB

    Изменение определенных цветов строк на основе критериев данных в excel vba с 2 критериями 1 может переопределить другую

    Большой многопользовательский поиск, чтобы соответствовать номерам в одном столбце, с гиперссылками, содержащими эти числа в другом столбце

    Сумма Sumif над несколькими листами

    Экспорт результатов из MySql в виде файла с разделителями табуляции. Строки с запятыми в них получают котировки вокруг строки, почему?

    Кодирование VBA с использованием последнего использованного номера столбца

    Логическое значение неправильно присваивается на основе условий для цикла

    Проверьте строку null и emptry в ячейке при извлечении данных excel

    Давайте будем гением компьютера.