Пытается вызвать сценарий Python из vba, но он возвращает числовую серию вместо желаемого результата - PullRequest
0 голосов
/ 05 мая 2020

Я пытался вызвать сценарий Python из vba, но он возвращает числовую серию вместо желаемого результата.

Вот сценарий python:

def hello():
    df = pd.DataFrame(data=[2,2])
    df.to_excel("hello_output.xlsx")
    return "Hello"
hello()

Я попытался реализовать сценарии vba из следующих сообщений stackoverflow и видеороликов YT:
Как вызвать python сценарий на excel vba?
Запустить и выполнить python скрипт из VBA https://www.youtube.com/watch?v=rlHcrAb2_fs&t=1s https://www.youtube.com/watch?v=Z4SC53VZh-w

Вот мой скрипт VBA (я пробовал как с одной, так и с двумя bakcslashes):

Sub RunPythonScript()
    PythonExe = """C:\\Users\\username\\anaconda3\\python.exe"""
    PythonScript = """C:\\Users\\username\\all scripts\\hello.py"""

    retval = Shell(PythonExe & " " & PythonScript)

    Worksheets("Sheet1").Range("D15").Value = retval
    MsgBox (retval)

End Sub()

Файл "hello_output.xlsx" не создается.
MsgBox выводит числовую серию (возможно, какой-то идентификатор процесса) вместо строки «Hello».

К вашему сведению, у меня установлены два интерпретатора python, и я попытался указать путь к файлу для них обоих. Интерпретатор anaconda python выдает следующее сообщение об ошибке при открытии вручную:

«Этот Python интерпретатор находится в среде conda, но среда не была активирована. Библиотеки могут не загружаться. Для активации в этой среде см. https://conda.io/activation "

Я написал свой код python в Spyder.

Мы будем очень признательны за любые предложения, как это исправить.

...