从VBA执行Python时,Python子进程会变慢

从VBA执行Python时,Python子进程会变慢,python,vba,ms-word,Python,Vba,Ms Word,这里是VBA Sub patseersearchPats1() pyfile = "path/to/test.py" Set objShell = CreateObject("WScript.Shell") ccmd = "python" & " " & pyfile & " " & """" & Selection.Range.Text & """" objShell.Run ccmd, 0, False End

这里是VBA

Sub patseersearchPats1()
    pyfile = "path/to/test.py"
    Set objShell = CreateObject("WScript.Shell")
    ccmd = "python" & " " & pyfile & " " & """" & Selection.Range.Text & """"
    objShell.Run ccmd, 0, False
End Sub
这里是python

import subprocess
import os
import uuid
import sys
import time

appdata = os.getenv('APPDATA')
npp = os.path.join(appdata, r"npp.7\notepad++.exe") #path to minimalistic npp 7

def MsgBox(data):
    temp = os.path.join(appdata, str(uuid.uuid4()) + '.md')
    with open(temp, 'a', encoding='utf-8') as f:
        f.write(data + '\n')

    subprocess.call([npp, temp])
    time.sleep(1)
    os.remove(temp)

if __name__ == "__main__":
    MsgBox(sys.argv[1])
像这样从cmd运行Python脚本。
c:\test>python pyfile.py“string”
在flash中打开,但从VBA使用它需要很多时间

测试:

直接运行python:

不到一秒钟

来自VBA

15-20秒


所以我认为这不是一个性能问题,而是一个过程问题。

也许更多的是一个代码审查问题?嗯,让我们等一下。如果你关心性能,为什么要使用VBA和python?你是对的。Python部分还可以。我认为问题在于VBA部分,当您使用Microsoft word时,并没有任何可行的替代方案。也许还有一个问题需要代码审查?嗯,让我们等待。如果您关心性能,为什么要使用VBA和python?您是对的。Python部分还可以。我认为问题在于VBA部件,当您使用Microsoft word时,并没有任何可行的替代方案。