【问题标题】:Automatically changing Python directory after running python script from excel using VBA使用 VBA 从 excel 运行 python 脚本后自动更改 Python 目录
【发布时间】:2018-07-04 12:30:40
【问题描述】:

感谢您查看我的问题。 我有一个 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

【问题讨论】:

  • 我怀疑您需要将工作目录路径从 VBA 传递给 python.exe 作为参数。 python程序无法知道您的excel文件在哪个目录。这是一个独立的过程。
  • 你可以尝试在wsh.CurrentDirectory = ...之前更改WScript的工作目录wsh.Run ...

标签: python vba shell


【解决方案1】:

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

【讨论】:

  • 感谢大家的帮助。除了@Vincent's Answer,没有其他人能完美运行。所以我在wsh.Run... 之前使用过wsh.CurrentDirectory = Thisworkbook.path 非常感谢...!
【解决方案2】:

尝试指定 csv 文件的路径:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多