Как отправить / прочитать данные из VBA в Python? - PullRequest
1 голос
/ 25 февраля 2020

Фон

Сейчас я создаю макрос, чтобы помочь автоматизировать создание некоторых графиков в VBA. Однако создание графиков требует выполнения определенных задач c, например, определенные точки в серии должны быть больше в зависимости от предыдущих случаев. Я бы предпочел сделать эту манипуляцию данными в python.

Проблема

Я хочу использовать Excel для его дружественного интерфейса, но хочу обрабатывать все данные манипуляции в пределах Python. Как я могу отправить данные, которые я создаю в VBA, на python. Чтобы уточнить, я не пытаюсь прочитать конкретные c ячеек в листе Excel.

Если я определю строку в VBA, скажем ...

 Dim example_string as String

 example_string = "Hello, 1, 2, 3, Bye"

Как я могу отправить эту информацию, созданную в VBA, на Python для манипуляции?

Дополнительные сведения

У меня есть текстовое поле в Excel, которое заполняется пользователем, которое я читаю с использованием VBA. Я хочу отправить эти текстовые данные из VBA на python. Пользователь выделяет нужные ячейки, которые не обязательно являются одинаковыми каждый раз, нажимает кнопку и заполняет текстовое поле. Я не хочу использовать диапазон или заданный c выбор ячеек, поскольку это потребует от пользователя конкретного ввода всех желаемых данных в ячейки (слишком много времени).

Я хочу понять основы c процедура отправки данных между VBA и python.

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете сделать все это в python, это будет более эффективно, и вы можете использовать Excel или sqlite3 в качестве базы данных, go здесь , чтобы прочитать о графических c интерфейсах с tkinter используйте pandas и numpy для обработки ваших данных.

Если вы настаиваете на отправке данных в python, импортируйте sys в ваш python скрипт, чтобы прочитать параметры, а затем запустите его из vba с Метод shell ().

РЕДАКТИРОВАТЬ: Вы хотели пример, вот он =>

Откройте новый файл Excel, создайте процедуру, подобную этой (VBA CODE):

Sub sendToPython()

    Dim shell As Object
    Dim python As String
    Dim callThis As String
    Dim passing

    Set shell = VBA.CreateObject("Wscript.Shell")

    '/* This is where you installed python (Notice the triple quotes and use your own path *always)*/
    python = """C:\Users\yourUserName\appdata\local\programs\python\python37\python.exe"""

    '/* This is the data you'll be passing to python script*/
    passing = "The*eye*of*the*tiger" 

    callThis = "C:\Users\yourUserName\desktop\yourScriptName.py " & passing & ""

    shell.Run python & callThis 

End Sub

Идея состоит в том, чтобы создать какой-то парсер в python, это мой глупый пример (PYTHON CODE):

import sys

f = open("log.txt", "w")
arg = (sys.argv[1]).split("*")
s = " "
arg = s.join(arg)
print("This is the parameter i've entered: " + arg, file=f)

Обратите внимание, как я использовал sys для чтения параметра и Я экспортировал, чтобы увидеть некоторые результаты, потому что в противном случае вы увидите, что черный экран выскакивает около миллисекунды.

Я также нашел эту статью, но она требует, чтобы вы завернули python сценарий в классе, и я не знаю, работает ли он для вас

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