簡體   English   中英

有沒有人試過從 Python 運行嵌入在微軟 Word 文檔中的宏

[英]Has anyone tried running macro embedded in a microsoft word document from Python

我在 word 2013 中有一個宏,它刪除空格並調整頁面寬度大小以確保表格適合。 目前,為了對文檔進行這些更改,用戶需要先運行宏,只有在運行宏之后,才能在打印文檔時確保更改。

我想自動化運行宏的部分

這是用於格式化 word doc 以確保文檔中的表格適合頁面。

import os
import time
import win32com.client
from docx import Document


macro_to_run = 'PostProcess'
document = 
   wordapp.Documents.Open('C:\\Users\\sarvesa\\Downloads\\test_xrd.doc')
wordapp.run(document, macro_to_run)
document.save
document.close

回溯(最近一次調用):文件“filename_change.py”,第 12 行,在 wordapp.run(document, macro_to_run) 文件“C:\\Users\\sarvesa\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\ site-packages\\win32com\\client\\dynamic.py”,第 516 行,在getattr ret = self. oleobj .Invoke(retEntry.dispid,0,invoke_type,1) pywintypes.com_error: (-2147352567, '發生異常。', (0, 'Microsoft Word', "'Run' is not a property.", 'wdmain11. chm', 25342, -2146822426), 無)

提供的“wordapp”是單詞的實例,調用如下:

wordapp = win32com.client.DispatchEx("Word.application")

那么有兩個問題:1)您缺少“應用程序”2)這些方法都是從 VBA 繼承的,這意味着您需要使用該語法。 這包括外殼! 我也不得不在谷歌上搜索很多這些信息並將其編譯成一個工作腳本。 我也推薦閱讀一些 VBA 教程。

嘗試:

wordapp.Application.Run(macroName)

編輯:您的“macro_to_run”也可能不夠。 您不僅需要指定模塊名稱,還需要指定要運行的 Sub:如"Normal.Module1.SubName"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM