我写了一个python脚本,需要使用VBA调用。我编写了一个 python 脚本,可以解析 pdf,将我需要的数据存储在变量中,并写入预制的 Excel 工作表以用这些值填充单元格。我已经成功地能够调用该脚本并使用以下代码运行它:
Sub RunPythonScript()
'Declare Variables
Dim objShell As Object
Dim PythonExe, PythonScript As String
'Create a new Object shell.
Set objShell = VBA.CreateObject("Wscript.Shell")
'Provide file path to Python.exe
'USE TRIPLE QUOTES WHEN FILE PATH CONTAINS SPACES.
PythonExe = """C:\Python38\python.exe"""
PythonScript = "C:\Users\matthew_vidovic\Documents\dwf-python\fedExPDF.py"
'Run the Python Script
objShell.Run PythonExe & PythonScript
End Sub
对我来说,最后一步是能够从 VBA 传递 pdf 文件,而不是在 python 脚本中传递。
目前,在我的 python 脚本中,我打开一个 pdf 并将其存储为文本,代码如下
raw = parser.from_file('nameofmyfile.pdf')
pdfText = raw['content']
我不想这样做,而是希望能够更改从 vba 中分析的 pdf 文件,而不是通过更改 python 脚本。有没有办法让我从 vba 将参数传递给 python 脚本,参数是 pdf 文件的名称。我需要能够从 vba 更改 pdf 文件,然后由 python 脚本分析该文件。
这样的事情可能吗?
任何帮助将不胜感激。
干杯!
确保导入 sys 并在脚本中读取适当的参数,然后在 VBA 调用中使用空格,然后读取参数,例如
test.py:
import sys
with open(f'C:/Users/User/OneDrive/Desktop/{sys.argv[1]}', 'w') as f:
f.write(b'some text')
VBA:
Sub RunPythonScript()
'Declare Variables
Dim objShell As Object
Dim PythonExe, PythonScript As String
'Create a new Object shell.
Set objShell = VBA.CreateObject("Wscript.Shell")
'Provide file path to Python.exe
'USE TRIPLE QUOTES WHEN FILE PATH CONTAINS SPACES.
PythonExe = """C:\Users\User\AppData\Local\Programs\Python\Python38\python.exe"""
PythonScript = "C:\Users\User\OneDrive\Desktop\test.py"
'Run the Python Script
objShell.Run PythonExe & Chr$(32) & PythonScript & Chr$(32) & "Argument.txt"
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)