Прочитать все имена и значения диапазона - PullRequest
0 голосов
/ 26 февраля 2019

Выполните ответ Феликса: я по-прежнему получаю сообщения об ошибках после изменения названия refer_to_range.value на имя.

Ниже приведен обновленный код и вывод ошибок от Jupyter.

Если я используюодиночное имя диапазона, а затем поиск значения, оно работает нормально, но когда я пытаюсь просмотреть список значений, возвращаемый «для имени в wb.names», я не могу вернуть значение для этого списка.

import xlwings as xw
wb = xw.Book(r'C:\Agency\wkbk utility\Uploaded to HDS\108 Place.xlsm')

for name in wb.names:
    range_value = wb.names(name).name

    print(range_value)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-e5c7c7a0215d> in <module>
      2 
      3 for name in wb.names:
----> 4     range_value = wb.names(name).name
      5 
      6     print(range_value)

~\Anaconda3\lib\site-packages\xlwings\main.py in __call__(self, name_or_index)
   2519 
   2520     def __call__(self, name_or_index):
-> 2521         return Name(impl=self.impl(name_or_index))
   2522 
   2523     def contains(self, name_or_index):

~\Anaconda3\lib\site-packages\xlwings\_xlwindows.py in __call__(self, name_or_index)
   1348 
   1349     def __call__(self, name_or_index):
-> 1350         return Name(xl=self.xl(name_or_index))
   1351 
   1352     def contains(self, name_or_index):

~\Anaconda3\lib\site-packages\xlwings\_xlwindows.py in __call__(self, *args, **kwargs)
    150         for i in range(N_COM_ATTEMPTS + 1):
    151             try:
--> 152                 v = self._inner(*args, **kwargs)
    153                 t = type(v)
    154                 if t is CDispatch:

~\Anaconda3\lib\site-packages\win32com\client\dynamic.py in __call__(self, *args)
    195                 if invkind is not None:
    196                         allArgs = (dispid,LCID,invkind,1) + args
--> 197                         return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None)
    198                 raise TypeError("This dispatch object does not define a default method")
    199 

TypeError: Objects of type 'Name' can not be converted to a COM VARIANT (but obtaining the buffer() of this object could)
...