Вызов скрипта python из excel / vba

У меня есть код python, который читает 3 аргумента (скаляры) и текстовые файлы, а затем возвращает мне вектор double. Я хочу написать макрос в vba, чтобы называть этот код python и записывать результаты в один из тех же листов excel. Я хотел знать, что было самым простым способом сделать это, вот некоторые вещи, которые я нашел:

Какие-нибудь советы?

5 Solutions collect form web for “Вызов скрипта python из excel / vba”

Внимательно следуйте этим шагам

  1. Перейдите в раздел «Активировать» и установите установщик ActivePython 2.5.7 MSI.
    У меня были проблемы с аддонами DLL с 2.6.x
  2. Установка на вашем компьютере с Windows
  3. после того, как установка завершена, откройте «Командная строка» и перейдите к

    C: \ Python25 \ Lib \ сайт-пакеты \ win32comext \ axscript \ клиент

  4. выполнить \> python pyscript.py вы должны увидеть сообщение Registered: Python

  5. Перейдите в ms office excel и откройте рабочий лист

  6. Откройте «Инструменты»> «Макросы»> «Редактор Visual Basic»
  7. Добавьте ссылку на элемент управления Microsoft Script alt text
  8. Добавьте новую пользовательскую форму. В UserForm добавьте CommandButton
  9. Переключитесь на редактор кода и вставьте следующий код

    Dim WithEvents PyScript Как MSScriptControl.ScriptControl

     Private Sub CommandButton1_Click() If PyScript Is Nothing Then Set PyScript = New MSScriptControl.ScriptControl PyScript.Language = "python" PyScript.AddObject "Sheet", Workbooks(1).Sheets(1) PyScript.AllowUI = True End If PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'" End Sub 

Выполнить. Наслаждайтесь и расширяйте по мере необходимости

Нужно ли вызывать код Python как макрос? Вы можете использовать COM-крючки в сценарии Python для прямого доступа к Excel и избегать использования другого языка:

 import win32com.client # Start Excel xlApp = win32com.client.Dispatch( "Excel.Application" ) workbook = xlApp.Workbooks.Open( <some-file> ) sheet = workbook.Sheets( <some-sheet> ) sheet.Activate( ) # Get values spam = sheet.Cells( 1, 1 ).Value # Process values ... # Write values sheet.Cells( ..., ... ).Value = <result> # Goodbye Excel workbook.Save( ) workbook.Close( ) xlApp.Quit( ) 

Вот хорошая ссылка для Excel из / в использование Python:

continuum.io/using-excel

упоминает xlwings, DataNitro, ExPy, PyXLL, XLLoop, openpyxl, xlrd, xlsxwriter, xlwt

Также я обнаружил, что ExcelPython находится в активной разработке.

  1. https://github.com/ericremoreynolds/excelpython

2.

Что вы можете сделать с VBA + Python:

Скомпилируйте скрипты py, которые принимают входные данные и генерируют выходные данные в виде текстовых файлов или с консоли. Затем VBA подготовит ввод для py, вызовет предварительно скомпилированный скрипт py и вернет его вывод.

3.

Рассмотрите документы Google, OpenOffice или LibreOffice, которые поддерживают скрипты Python.

Предполагается, что доступные параметры с интерфейсами сценариев COM или MS не удовлетворяют вашим потребностям.


Это не свободный подход, но стоит упомянуть (в Forbes и New York Times):

https://datanitro.com


Это не бесплатно для коммерческого использования:

PyXLL – Excel addin, позволяющий вызывать функции, написанные на Python, в Excel.

В этом коде есть учебник по CodeProject.

См. http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython .

Еще один open-source python-excel в инструменте process com. Это позволяет выполнять скрипты python с превосходным интегрированным способом.

https://pypi.python.org/pypi/Python-For-Excel/beta,%201.1

  • VBA: ресурсы для программистов на Python
  • Анализ сходства текста (Excel)
  • Oppposite Workings OLEDB / ODBC между Python и MS Access VBA
  • Python конвертировать Excel 2004 xml в csv (или excel)
  • Возврат результата внешнего скрипта к VBA
  • Использование Python для программирования макросов MS Office?
  • Есть ли способ вызвать код python в Excel-VBA?
  • Результат возврата от Python до Vba
  • Как подождать, пока Excel не вычислит формулы, прежде чем продолжить с win32com
  • Как передать значение из VBA в python
  • Объект «Список» не имеет атрибута «Значения»
  • Python - лучший язык программирования в мире.