Проблема с запуском python с модулем VBA

#python #vba

Вопрос:

Я пытаюсь запустить скрипт на python с модулем vba. Я думаю, что проблема как-то связана с тем, что моя среда pythons настроена неправильно, но это может быть что-то другое. Вот мой VBA и простой код python для написания CSV.

 Sub xls2py()
    Dim objShell As Object
    Dim PythonExe, PythonScript As String
    Set objShell = VBA.CreateObject("Wscript.Shell")
    PythonExe = """C:UsersPeterConda123python.exe"""""
    PythonScript = """C:UsersPeterDownloadsUntitled3.py"""

    objShell.Run PythonExe amp; PythonScript


End Sub
 

Вот часть python (без названия 3) :

 import pandas as pd
ls=['hello world','Sup']
DFstring=pd.DataFrame(ls)
DFstring.to_csv("test.csv")
 

Последнее замечание, в моих реальных путях в обоих есть пробелы. Вот почему у меня есть тройные кавычки на обеих строках vba.

Комментарии:

1. Вы забыли описать проблему. С какими ошибками вы сталкиваетесь? Пожалуйста, опишите «проблему», чтобы другие могли попытаться вам помочь. 😉

2. Первый строковый литерал фактически заканчивается 5 кавычками, поэтому сама строка заканчивается двумя кавычками. В этом может быть проблема. Трудно понять, так как вы не сказали нам, в чем на самом деле проблема.

3. Как ваш скрипт узнает, где находится файл «test.csv»? Полагается ли он на определенный текущий каталог? Это может быть установлено «случайно», когда вы запускаете скрипт вручную, но при вызове его из VBA нет никакой гарантии… Я бы также добавил пробел между PythonExe и PythonScript когда вы позвоните в Shell

4. Извините за отсутствие ясности здесь. В настоящее время проблема в том, что я не могу найти файл «test.csv». Я предполагал, что он создаст его в том же каталоге, что и файл .py. Кроме того, я даже не уверен, запускается ли вообще сценарий. Это кажется так, потому что при запуске появляется и исчезает окно приглашения. Возможно, мне нужно указать, где создать файл test.csv?

5. Да, вы обязательно должны указать своему сценарию полный путь к файлу test.csv, либо жестко закодированный, либо с помощью аргумента, переданного сценарию.