Ваш вопрос слишком широкий.Ответ - да.Для этого есть несколько библиотек.Посмотрите на openpyxl
, win32com
: также называется pywin32
, и pandas
Из этих 3
openpyxl
является самым простым в использовании, но может не содержать полную функциональность ExcelVBA.
win32com
является наиболее близким к VBA, и большинство вызовов функций одинаковы вплоть до того, как в них передаются аргументы.
pandas
- правильный выбор, если вы используете много чисели главным образом используя файлы электронных таблиц в качестве хранилища данных.
РЕДАКТИРОВАТЬ:
Снимок экрана пользовательского интерфейса Excel с кнопкой команды:

Код 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