Я создаю ListObject в Excel с помощью VSTO следующим образом:Как я могу вернуть ранее созданный Excel ListObject?
ListObject lo = ws_vsto.Controls.AddListObject(range, "MyList");
(переменная диапазон ранее определенный диапазон.)
Если я затем цикл по таблице Controls коллекции я могу найти, что ListObject ,
Однако, если я сохраню книгу и снова ее открою, коллекция элементов управления пуста. Как я могу вернуть этот ListObject после повторного открытия, чтобы продолжить работу с ним?
EDIT
У меня есть немного дальше:
var wb = Globals.ThisAddIn.Application.ActiveWorkbook;
var wb_vsto = wb.GetVstoObject();
foreach (Excel.Worksheet ws in wb.Worksheets)
{
var wsv = ws.GetVstoObject();
foreach (Excel.ListObject l in ws.ListObjects)
{
MessageBox.Show(l.Name);
var lo = wsv.Controls.AddListObject(l);
Excel.Range range = lo.Range;
range.Activate();
}
}
Когда я добираюсь до вар Lo = линии, у меня есть ListObject добавлен в коллекцию Controls и доступны для использования. Однако свойство DataSource имеет значение null. Есть ли простой способ вернуть исходный источник данных?
Я тогда подумал о перестройке источника данных из информации в диапазоне. Линия range.Activate() выбирает список в Excel (поэтому я знаю, что он имеет правильную вещь). Тем не менее, я не могу на всю жизнь разобраться, как получить данные из этого диапазона и получить адрес диапазона. В документации MSDN говорится о свойстве Address, но это фактически не существует. (Документация MSDN для VSTO в лучшем случае кажется канатной).
Откуда вы знаете, что «коллекция элементов управления пуста»? Как пытаться завладеть коллекцией элементов управления? Как вы пытаетесь получить ListObject в коде? Пожалуйста, отредактируйте этот вопрос, чтобы включить этот код. – shahkalpesh
Коллекция элементов управления пуста, потому что свойство Count возвращает 0. –