Спасибо, что посмотрел на мою проблему. У меня есть скрипт python, который пишет новый CSV файл в моем текущем каталоге. Я использовал python.exe с помощью pyinstaller. То, что я делаю, запускает этот exe файл, используя форму VBA excel при нажатии кнопки. Проблема заключается в том, что после запуска exe с помощью VBA мой csv сохраняет папку документов по умолчанию вместо папки, где находится мой python.exe. Но если я запускаю python.exe напрямую без VBA, тогда он сохраняет csv в моем текущем каталоге. Итак, как я могу сохранить csv в текущем каталоге после запуска python.exe с помощью VBA
Вот мой код python, который создает новый файл csv:
csvfile = open("Mycsv" + '.csv', 'w')
cr = csv.writer(csvfile, dialect='excel')
Я также пробовал использовать: csvfile = open(os.getcwd() + "\Mycsv" + '.csv', 'w')
Но не сработал.
Вот мой код VBA:
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer
wsh.Run Chr(34) & ThisWorkbook.path & "\python.exe" & Chr(34), windowStyle, waitOnReturn
попробуйте указать путь для вашего файла csv:
import os.path
save_path = 'C:/example/'
csvName = os.path.join(save_path, "Mycsv"+".csv")
csvfile = open(csvName, "w")
Перед сохранением файла вы можете использовать os.chdir(some_path_to_directory)
чтобы установить текущий рабочий каталог, а затем сохранить в этом каталоге.
wsh.CurrentDirectory = Thisworkbook.path
перед wsh.Run...
Большое спасибо ...!
python.exe
в качестве аргумента. Программа python не может узнать, в каком каталоге находится ваш файл Excel. Это самостоятельный процесс.wsh.CurrentDirectory = ...
передwsh.Run ...