Как вызвать скрипт Python из определенных ячеек в электронной таблице - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть сценарий Python для взаимодействия с базой данных и дать некоторый результат.Я создаю новый лист в рабочей книге и сохраняю этот результат.

У меня есть рабочая книга, и я хочу вызвать этот сценарий из всех ячеек в определенной строке на активном листе рабочей книги, используя значение ячейки какаргумент скрипту.

Я узнал следующие вещи
1) Создайте макрос VBA и вызовите скрипт из макроса
2) Вставьте макрос в лист

Я ничего не знаю о VBA и не смог найти для него хороших ресурсов.

Можно ли решить мою проблему с помощью самого Python?

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

1 Ответ

0 голосов
/ 27 декабря 2018

Ваш вопрос слишком широкий.Ответ - да.Для этого есть несколько библиотек.Посмотрите на openpyxl, win32com: также называется pywin32, и pandas

Из этих 3
openpyxl является самым простым в использовании, но может не содержать полную функциональность ExcelVBA.
win32com является наиболее близким к VBA, и большинство вызовов функций одинаковы вплоть до того, как в них передаются аргументы.
pandas - правильный выбор, если вы используете много чисели главным образом используя файлы электронных таблиц в качестве хранилища данных.

РЕДАКТИРОВАТЬ:

Снимок экрана пользовательского интерфейса Excel с кнопкой команды:

Excel UI for Command Button

Код VBA:

Public Sub StartExeWithArguments()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Dim ws As Worksheet
    Set ws = wb.Sheets("Config") 'Have a sheet named "Config"

    'The values here are for passing in the args to a python script that runs as an .exe file
    strProgramName = Trim(ws.Range("B4").Value) '.exe filepath
    strPdfLoc = Trim(ws.Range("B5").Value) 'file being acted on
    strPdfSave = Trim(ws.Range("B6").Value) 'file being created
    strPdfPass = Trim(ws.Range("B7").Value) 'additional argument
    'string concatenation
    strArgument = strPdfLoc & " " & strPdfSave & " " & strPdfPass

    'Checking the cmd line to be passed into the Shell as args for the .exe
    Debug.Print """" & strProgramName & """ " & strArgument & """"
    'How VBA calls the cmd to run
    'Note that """" actually prints one " because " is an escape char and also a string quote in VBA
    Call Shell("""" & strProgramName & """ " & strArgument & """", vbNormalFocus)
End Sub

Приведенный выше код демонстрирует, как можно создать макрос для запуска .exe и передачи аргументов.
Что касается триггера при выборе ячейки используйте пример, показанный в этой ссылке .

Чтобы создать файл .exe, используйте pip3 install pyinstaller и cd, чтобы перейти к папке, содержащей скрипт .py, затем выполните pyinstaller --onefile yourscript.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...