Ari*_*Yxm 6 python vba ms-word
我正在尝试使用 python 调用 Word 宏。我试图采用用于通过python运行Excel vba宏的逻辑(有很多关于如何通过python运行Excel宏的示例,但我没有找到任何word)。这是我尝试使用的代码。但是我得到的是 pyhton 永远运行,我不知道为什么。我究竟做错了什么?感谢任何愿意帮助我的人!
这是我的尝试:
import os
import comtypes.client
path=r"path to my folder containing file.docx"
word=comtypes.client.CreateObject("Word.Application")
docx=word.Documents.Open(path, ReadOnly=1)
docx=word.Application.Run("My_Macro_Name")
word.Documents(1).Close(SaveChanges=0)
word.Application.Quit()
wd=0
Run Code Online (Sandbox Code Playgroud)
我也试图更好地指定我的 vba 宏的位置(我将它保存在 .docm 文件中),但仍然没有结果。Python 继续运行而不显示任何结果。这是我的尝试(感谢您到目前为止提供的有用建议!):
import os
import comtypes.client
path=r"path to the .docm file where I saved the vba macro"
word=comtypes.client.CreateObject("Word.Application")
word.Documents.Open(path,ReadOnly=1)
word.Run("Project.Modulo1.ConvertDoc")
word.Documents(1).Close(SaveChanges=0)
word.Application.Quit()
wd=0
Run Code Online (Sandbox Code Playgroud)
小智 1
为什么不通过 Cscript/Wscript 间接运行 VBA 宏?您不必使用 comtypes 包。让我们创建一个 VBS 文件来运行 marco:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("test.xls")
objExcel.Application.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Test value"
objExcel.Application.Run "Macro.TestMacro()"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit
Run Code Online (Sandbox Code Playgroud)
蝙蝠文件:
C:\Windows\System32\cscript.exe D:\Script.vbs > output.log
exit
Run Code Online (Sandbox Code Playgroud)
现在您可以从 Python 运行批处理文件:
import subprocess
subprocess.call([r'path where the batch file is stored\name of the batch file.bat'])
Run Code Online (Sandbox Code Playgroud)
您可以在输出日志文件中读取其响应。
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |