Microsoft.Office.Tools.Excel.ApplicationFactory.GetVstoObject вызывает утечку памяти VBA?

ниже – это минимальный образец VSTO-Project, который заставляет Excel VBA-Environment отображать ошибку «Недостаточно памяти» и вызывает появление VBA-проекта дважды.

Вопрос: Является ли это ошибкой в ​​методе GetVstoObject? Как я могу обойти ???

шаги:

  1. В Excel 2010: создайте новую книгу и нажмите ALT + F11, чтобы войти в среду VBA
  2. В VBA.ThisWorkworkbook: Создайте пустой новый Sub

    Sub test ()

    End Sub

  3. Сохраните книгу как Test.xlsm и выйдите из Excel.

  4. Создайте новую надстройку Excel 2010 в Visual Studio
  5. Замените весь код в ThisAddIn.cs кодом ниже.
  6. Начать отладку Excel с помощью F5
  7. Начать отладку ExcelAddIn1 с помощью F5
  8. Откройте сохраненную книгу Test.xlsm .
  9. Повторно заново запишите сохраненную книгу (ВАЖНО: нужно сделать это «извне», например, используя Jumplist Excel на панели задач Windows)

Результаты:

  • CTP удваивается
  • Если вы нажмете ALT + F11, чтобы открыть VBA, вы получите «Недостаточно памяти» -Error

Спасибо за любое объяснение / решение!

С уважением, Йорг


C # Минимальный код надстройки:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(Application_WorkbookActivate); } void Application_WorkbookActivate(Excel.Workbook Wb) { //This is the important line: var activeVstoWorkbook = Globals.Factory.GetVstoObject(Wb); } #region VSTO generated code private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); } #endregion } } 

  • Excel: предыдущие значения из диапазонов
  • Загрузка DataTable из DataSet с правильной шириной и форматом столбца
  • Есть ли причина не использовать класс «1» с небольшой надстройкой VSTO?
  • VSTO Excel 2007 addin не удается установить из сетевого ресурса
  • Включение сбора мусора на сервере в надстройке уровня документа VSTO Excel
  • В vsto C # при копировании (без вставки) диапазона, как узнать этот диапазон (строка / col / rect info)?
  • Быстрый способ получить диапазон Excel в виде массива текстов или форматов ячеек в C #?
  • Использование встроенных функций Excel поверх UDF
  • Получить данные из объекта ListObject, не созданного из кода
  • Создание Excel Настройка уровня документа на Visual Studio 2015
  • Как сгенерировать событие щелчка ячейки в Excel 2007 VSTO с VB?
  • Давайте будем гением компьютера.