使用VBA从excel运行python脚本后自动更改python目录

时间:2018-07-04 12:30:41

标签: python vba shell

感谢您查看我的问题。 我有一个python脚本正在当前目录中写入新的csv文件。我使用pyinstaller使它成为python.exe。我正在做的是,单击按钮就使用VBA表格excel运行此exe文件。问题是使用VBA运行exe后,我的csv保存在默认文档文件夹中,而不是python.exe所在的文件夹中。但是,如果我不使用VBA直接运行python.exe,则它将csv保存在当前目录中。因此,使用VBA运行python.exe后,如何将csv保存在当前目录中?

这是创建新的csv文件的python代码:

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

2 个答案:

答案 0 :(得分:0)

在保存文件之前,您可以使用os.chdir(some_path_to_directory)设置当前工作目录,然后保存在该目录中。

答案 1 :(得分:0)

尝试指定csv文件的路径:

import os.path
save_path = 'C:/example/'
csvName = os.path.join(save_path, "Mycsv"+".csv") 
csvfile = open(csvName, "w")