ExcelDNA – создание таблицы: xlcAddListItem или другим способом

Я пытаюсь понять, как использовать ExcelDNA для создания таблицы из диапазона ExcelReference .

В Excel вы обычно делаете что-то вроде:

 range2.Worksheet.ListObjects.Add(Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange, range2, System.Type.Missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes, System.Type.Missing).Name = "uniquesomething"; 

Я пытаюсь сделать что-то подобное с ExcelDNA используя xlcAddListItem , но это довольно грубо, без какой-либо надлежащей документации. Кто-нибудь имел успех? В основном возьмите ExcelDNA массива ExcelDNA, а затем возьмите вывод сетки и переведите его в таблицу.

До сих пор я пытался

 ExcelDna.Integration.SourceItem mySourceItemHopefully = (ExcelDna.Integration.SourceItem)XlCall.Excel(XlCall.xlcAddListItem, 1, myExcelReference); mySourceItemHopefully.Name = "uniquesomething"; 

Но я получаю ошибку нарушения доступа.

Для этого вам придется использовать объектную модель COM, которую вы можете безопасно использовать изнутри надстройки Excel-DNA до тех пор, пока вы:

  1. используйте ExcelDnaUtil.Application чтобы получить корневой объект Application , и

  2. сделать все вызовы объектной модели COM из основного потока в контексте макрокоманды или COM-обратного вызова.

Возможно, вам понадобится получить объект COM Range из ExcelReference .

Это может быть просто:

 static Range ReferenceToRange(ExcelReference xlref) { string refText = (string)XlCall.Excel(XlCall.xlfReftext, xlref, true); dynamic app = ExcelDnaUtil.Application; return app.Range[refText]; } 

(Здесь «динамическое» приложение также может быть напечатано как Microsoft.Office.Interop.Excel.Application , если у вас есть ссылка на сборку PIA.)

Для более сложных ExcelReferences с несколькими прямоугольниками вы можете начать с кода VB.NET отсюда: https://github.com/Excel-DNA/Registration/blob/882517eed2137d2b2f9b4b794803258d20e5a174/Source/ExcelDna.Registration.VisualBasic/RangeParameterConversion.vb


Добавление таблиц не поддерживается API C. Microsoft не расширила макросы xlcXXX чтобы охватить более новые функции в последних версиях Excel (начиная с Excel 2000). (Тем не менее, список функций xlfXXX был обновлен до Excel 2013 года).

Две приведенные вами функции макросов не относятся к типу таблиц, которые вы создаете – вы можете увидеть это в файле справки MacroHelp, который вы можете найти здесь: http://www.xceed.be/Blog.nsf/dx/excel -macro-функция-помощь-файлов для-Windows-7

ADD.LIST.ITEM ( xlcAddListItem ): «Добавляет элемент в список или выпадающий элемент управления на листе или в диалоговом окне».

TABLE ( xlcTable ): «Эквивалентно выбору команды« Таблица »в меню« Данные ». Создает таблицу на основе входных значений и формул, которые вы определяете на листе. Используйте таблицы данных для выполнения анализа« что-если »путем изменения определенных значений констант в вашей книге, чтобы узнать, как влияют значения в других ячейках ». Это касается таблиц данных, которые отличаются от таблиц «ListObject», которые вы пытаетесь создать.

  • URL HelpTopic в ExcelDNA
  • Небольшой совет по взаимодействию с C # - Excel
  • Отобразить отчет SSRS в ExcelDNA
  • Как повторно запускать GetCustomUI () из ExcelDNA
  • Excel-DNA, вызывающая функцию xll из другой функции async xll (исключение из HRESULT: 0x800AC472)
  • подтвердить строку формата для числовых значений в excel (dna)
  • Отладка .xll в Visual Studio убивает прикрепленный сеанс Excel
  • Excel DNA в ошибке VB.NET «Xcopy вышел с кодом 9009»
  • Исключение System.NullReferenceException в библиотеке классов
  • ExcelDna / NetOffice / Excel: самый эффективный способ вставки значений?
  • Функция Toggle Hidden с кодом C # Excel-Dna
  • Interesting Posts

    Как изменить стиль всех строк в выбранном диапазоне?

    Макрос Microsoft Excel Изменение значения ячейки при Ran

    Macro говорит: «Заканчивайте, если с помощью out block if», но все блоки if

    Sql Импорт из Excel

    Как создать Pivot из выделения, в VBA, Excel

    Скопируйте числовые коды в буфер обмена и вставьте в Excel без их форматирования в виде чисел

    Excel VBA – проверьте, является ли активный рабочий лист первым рабочим листом

    getLastRowNum не возвращает правильное количество строк

    Как вы не можете перемещать / редактировать командную кнопку Excel / ActiveX, но разрешать ее щелкнуть

    Excel VBA удаляет пустую строку после вырезания

    Сводная таблица «RefreshTable» против методов «Обновить»

    Вычислить стандартное отклонение от биннного списка

    сравнение двух имен файлов с использованием логического И

    Ошибка времени выполнения '-2147467259 (80004005)': метод «занят» объекта «IWebBrowser2» не выполнен

    Как я могу получить пользовательский ввод из Excel в R динамически?

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