Можете ли вы вызвать Python из Excel в экземплярах Excel, отличных от первого?

Этот вопрос предназначен для вызова Python из Excel. В VBA вы бы сделали RunPython("import mymodule; mymodule.my_function()")

В Python у вас будет что-то вроде

from xlwings import Workbook, Sheet, Range

    def my_function():
        wb = Workbook.caller() # Create reference to calling Excel file
        Range('A1:C3').clear_contents() # Clear some cells

Мой вопрос в том, что это будет работать для вашего первого экземпляра Excel. Но если у вас открыты два экземпляра и вы пытаетесь запустить код во втором экземпляре, вы получите поднятое исключение, говорящее: «Не удается установить соединение! Убедитесь, что вызывающая книга активна и открыто в первом экземпляре Excel».

Так что похоже, что это предназначено для работы только с первым экземпляром. Есть ли способ обойти это? Можете ли вы определить, в каком экземпляре вы находитесь в скрипте Python? Пользователь надеялся запустить макросы VBA, которые вызывают Excel в нескольких экземплярах.


person Matt    schedule 01.06.2015    source источник


Ответы (1)


В принципе xlwings может работать с 2 инстансами. Однако, в зависимости от ваших настроек безопасности, он может рассматривать файлы, загруженные из Интернета или хранящиеся на сетевом диске, как небезопасные и помещать их в «песочницу». Эти файлы доступны для xlwings только в том случае, если они запускаются в первом экземпляре. Если это похоже на вашу проблему, то снижение настроек безопасности потенциально может решить проблему. См. также этот ответ здесь.

person Felix Zumstein    schedule 02.06.2015