Сегодня мы разберем как можно запускать скрипты Python напрямую из Excel, минуя какие либо промежуточные интерфейсы. Для этой задачи нам понадобится пакет Хlwings. Он входит в состав Anaconda, поэтому если Вы ее установили, то никаких дополнительных действий не требуется.
Обращаю внимание, что инструкция относится для версии xlwings 0.16.0 и выше. Если у вас установлена версия ниже - обновите пожалуйста пакет.
xlwings addin install
После того, как команда отработала, то запустите Excel и вы должны увидеть новую ленту xlwings:
Далее запустите VBA редактор (Alt + F11), там в меню Tools выберите References..., в открывшемся меню активируйте xlwings:
Итак в поле Interpreter указываем путь до файла python.exe, включая название файла. К примеру у меня адрес следующий: D:\Python\Anaconda3\envs\work\python.exe
В поле Conda Base указываем адрес, куда установлена Anaconda. К примеру у меня это D:\Python\Anaconda3.
Далее в поле Conda Env указываем название виртуального окружения. У меня к примеру это work. Если Вы не знаете название вашего виртуального окружения, то запустите Anaconda Navigator, далее перейдите в пункт Environments и там увидите необходимое название.
Отлично. На сегодня все. Есть вопросы - задавайте в комментариях ниже.
Обращаю внимание, что инструкция относится для версии xlwings 0.16.0 и выше. Если у вас установлена версия ниже - обновите пожалуйста пакет.
1. Установка Excel аддона
Первое, что надо сделать - это установить специальный аддон в Excel. Для этого запустите командную строку Anaconda и введите команду:xlwings addin install
После того, как команда отработала, то запустите Excel и вы должны увидеть новую ленту xlwings:
Далее запустите VBA редактор (Alt + F11), там в меню Tools выберите References..., в открывшемся меню активируйте xlwings:
2. Настройка ленты xlwings в Excel
Далее необходимо прописать в ленте xlwings путь до Python, а также расположение директории, куда была установлена Anaconda и как называется используемое Виртуальное окружение (environment).Итак в поле Interpreter указываем путь до файла python.exe, включая название файла. К примеру у меня адрес следующий: D:\Python\Anaconda3\envs\work\python.exe
В поле Conda Base указываем адрес, куда установлена Anaconda. К примеру у меня это D:\Python\Anaconda3.
Далее в поле Conda Env указываем название виртуального окружения. У меня к примеру это work. Если Вы не знаете название вашего виртуального окружения, то запустите Anaconda Navigator, далее перейдите в пункт Environments и там увидите необходимое название.
3. Запуск Python скрипта из Excel
Для запуска скриптов есть два варианта:3.1 Без использования VBA
Создайте Excel файл, сохраните его с любым названием, далее в этой же папке создайте python скрипт с таким же названием, как и Excel файл, в нем создайте функцию с названием main(). Эту функцию вы сможете вызвать из ленты xlwings нажав на кнопку "Run main". К примеру внесите в скрипт следующий код:import xlwings as xwСохраните скрипт и запустите его, нажав на кнопку "Run main" в ленте xlwings. Если вы все сделали корректно, то в ячейке A1 Excel файла должен появиться текст "Hello World!".
def main():
wb = xw.Book.caller()
wb.sheets[0].range('A1').value = 'Hello World!'
3.2 С использованием VBA
Создайте Excel файл, сохраните его с любым названием в формате с поддержкой макросов, далее в этой же папке создайте python скрипт с таким же названием, как и Excel файл. В скрипте создайте функцию с любым названием, к примеру:import xlwings as xwДалее запустите редактор VBA и в нем пропишите следующий код:
def hello():
wb = xw.Book.caller()
wb.sheets[0].range('A1').value = 'Привет мир!!!'
Первая часть параметров функции (import Excel_Xlwings) указывает на название скрипта Python (Excel_Xlwings), а вторая Excel_Xlwings.hello() - на название функции в этом скрипте. Теперь выполните этот макрос, как и любой другой макрос VBA. Если сделали все правильно - то в результате в ячейке A1 Excel файла должен появиться текст "Привет мир!!!".
Sub HelloWorld()
RunPython ("import Excel_Xlwings; Excel_Xlwings.hello()")
End Sub
4. Создание пользовательских функций (UDF) в Excel при помощи Python
Как и в пункте 3.2 необходимо создать и сохранить Excel файл с поддержкой макросов, далее в той же папке, где расположен сохраненный эксель файл, создать скрипт Python и внести туда код пользовательской функции, к примеру:import xlwings as xwСохраняем скрипт, далее в ленте xlwings нажимаем кнопку Import Functions для загрузки созданной функции из Python в Excel. Теперь вы можете применять эту функцию, как и другие функции Excel:
@xw.func
def double_sum(x, y):
"""Возвращает сумму двух агрументов умноженную на 2"""
return 2 * (x + y)
Отлично. На сегодня все. Есть вопросы - задавайте в комментариях ниже.
Немного начинает проясняться. Я так понимаю, если потом эта книга уйдёт на другой ПК, то ничего работать не будет.
ОтветитьУдалить