Не удается получить значение раскрывающегося списка Excel (поле со списком) с помощью python

У меня есть файл excel с раскрывающимся списком, и я хотел бы получить доступ к его текущему значению из python.

В vba код действительно прост:

Sheets("name_of_my_sheet").name_of_my_list.value

Я искал эквивалент в xlrd, но не смог его найти.


person Knshiro    schedule 04.08.2011    source источник
comment
похоже, что код, который вы разместили, смотрит на список, а не на раскрывающийся список, который использует указанный список для своего содержимого.   -  person Bnjmn    schedule 04.08.2011
comment
Итак, как мне получить доступ к этому списку?   -  person Knshiro    schedule 04.08.2011
comment
Просто перейдите в ячейку, в которой находится список, и прочитайте ее содержимое.   -  person Bnjmn    schedule 04.08.2011
comment
Это было первое, что я попробовал :) И я получаю пустую ячейку, когда пытаюсь его получить. Единственный способ, который я могу найти прямо сейчас, - это иметь vba on change, который фактически помещает свое значение в ячейку и читает его из этой ячейки, но это не очень элегантно.   -  person Knshiro    schedule 04.08.2011
comment
Думаю, я понял. Этот не элегантный способ является единственным, поскольку этот список существует только при запуске программы электронных таблиц, которая выполняет vba, его нельзя прочитать напрямую из файла xls.   -  person Knshiro    schedule 04.08.2011


Ответы (1)


Я получил свой ответ. Список раскрывающегося списка создается во время выполнения в vba, поэтому вы не можете «прочитать» его значение из xls.

Решение состоит в том, чтобы написать в VBA метод изменения, который фактически запишет значение в ячейку под полем.

Sub My_List_Change()
   Sheets("Containing your box").Cells(x,y) = My_List.value // x,y being the coordinates of the cell hidden by the box

Затем каждый раз, когда вы сохраняете свой лист и хотите прочитать его из python, вы можете получить доступ к текущему значению.

person Knshiro    schedule 04.08.2011