banner
Xavier Wang

鸟之言语

到墙外,听鸟的声音
twitter
jike
bilibili
github

巧用 Word 郵件合併,半自動生成活動照片記錄文件

這個學期開始接觸行政事務,現今的教學、德育、安全等工作都強調「事過留痕」的原則,各類活動都要求「精心策劃、詳細記錄」—— 包括撰寫方案、拍照、撰寫方案、簡報以及打印活動照片,每個星期少也有 3~4 份活動照片記錄,排版工作確實相當繁瑣。

使用 Quicker 生成每週的 “三表”

在去年嘗試使用 Quicker 自動生成每週的缺勤登記、體溫異常及健康情況統計表後,我便想,尋找能夠半自動或自動生成活動照片記錄的方法,提高此類事務的處理效率。

💡 理清思路#

活動照片記錄文檔主要由標題、照片及照片說明組成,可以在此基礎上構建一個模板,進行重複套用。

使用壓縮軟體打開 Docx 格式的 Word 文檔

原先我的設想是,Docx 文件本質上是一個壓縮包,通過直接替換壓縮包中的圖片,外加手動修改標題,便完成了活動照片記錄。

不過這個想法很快就被上頭「一拍大腿」的格式標準給打破了 —— 每張照片下,都必須用文字說明時間、地點、主題、主辦單位。

少數派作者群的群友給出了不少的建議,比如利用 python-docx 庫,以及郵件合併的方法。而 Power Automate 涉及到 Excel 與 Word 的自動化流需要訂閱高級版方可使用。因為不會 Python 和 VBA,我最終選擇了大學計算機基礎學過的 Word 郵件合併,Word 的事還是交給 Word 來解決(

注:下文步驟將創建兩個文件 —— 信息模板.xlsx郵件合併模板.docx,並使用 F:\工作文件\照片收集\ 作為活動照片存放的文件夾,請根據實際情況進行更改。

🎬 視頻教程#

📋 準備工作#

創建信息模板#

Word 郵件合併可以將數據源的信息,套用在一個相同格式的模板,適合生成大量個性化文檔的場景。

第一步,我先在 Excel 中製作了活動照片記錄需要的信息字段模板,比如活動主題活動日期活動照片存放文件夾,通過這些基礎信息,利用公式生成其餘的固定信息。

Excel 工作簿分為兩個工作表 —— 鍵入數據生成列表,前者用於輸入相關信息,後者生成後提供給 Word 引用。需要注意,因為 Word 中的 IncludePicture 域會處理反斜杠 \,因此文件夾和照片文件的單反斜杠 \ 需要替換為雙反斜杠 \\

照片文件夾照片路徑 兩列的數據可以通過公式自動處理,如 ="F:\\工作文件\\照片收集\\"&B2 生成文件夾路徑、=E2&"\\1.jpg" 生成照片文件路徑(照片按照 1.jpg2.jpg3.jpg …… 格式進行重命名)。

鍵入數據表格內容

生成列表表格內容

完成編輯後,保存 信息模板.xlsx 表格。

製作 Word 模板#

第二步,按照文件格式要求,製作活動照片記錄的模板。這一步可以直接套用先前製作的文檔。

創建活動照片記錄文檔的基礎模板

🔗 進行郵件合併#

第三步,進行郵件合併。在 Word 中切換至郵件選項卡,進入郵件合併分步向導,數據來源使用剛才創建的信息字段模板。接下來,我們需要在文檔中需要填寫信息的地方,插入合併域。

郵件合併分步向導操作過程

當你在這一步點擊生成時,恭喜你得到了一份沒有照片且不符要求的活動記錄,實現自動插入照片以及滿足一頁兩張照片的要求,還需要使用多一點點域代碼。

錯誤格式

域代碼#

Word 域代碼可以看成是動態更新的內容,用於在文檔中插入自動化的內容、功能或數據,例如頁碼、日期和時間、郵件合併、文檔屬性、交叉引用、圖序等。在這裡我們需要用到 IncludePicture 域、Next 字段

IncludePicture 域可以在文中插入指定路徑的圖片。在插入選項卡中,找到文檔部件 - 域 - IncludePicture,文件名填寫「路徑」二字,點擊確定插入到文檔的指定位置。

因為還沒有填寫圖片的文件路徑,圖片此時是無法加載的。按下 Alt + F9 快捷鍵,顯示當前文檔的域代碼,將 IncludePicture 域中的「路徑」二字替換為照片路徑域。

在 IncludePicture 域中插入照片路徑域

默認情況下,Word 會按頁為單位生成新的文檔,實現同一文檔插入多條數據記錄,我們需要使用到 Next Record 域

使用方法很簡單,在郵件選項卡中,找到規則 - 下一記錄,插入至圖片說明的末尾。接著將圖片以及圖片說明複製、粘貼、複製、粘貼。

插入 Next Record 域

生成文檔#

完成以上步驟後,你就得到了一份活動照片記錄的模板。在 郵件 選項卡中,點擊 完成並合併 - 編輯單個文檔,生成後,選擇全部內容 Ctrl + A,更新域內容 F9,此時生成的文檔圖片便會自動更新為文件夾的照片。

郵件合併生成文檔效果

✅ 進階玩法#

注:以下的 VBA 宏代碼均由 ChatGPT 生成,本人負責組合、拼接與搬運。

除了手動完成郵件合併,利用 VBA 宏與快捷鍵,也能減少生成文檔需要的步驟。

首先,分別將 信息模板.xlsx郵件合併模板.docx 分別另存為 信息模板.xlsm(啟用宏的表格)、郵件合併模板.docm(啟用宏的文檔),Word 與 Excel 需要開啟宏,並將文檔所在目錄設為 受信任目錄Word 選項 - 信任中心 - 信任中心設置 - 受信任位置)。

隨後打開 信息模板.xlsm,按 Alt + F11 進入 VBA 編輯器,點擊 插入 - 模塊,在編輯框中插入以下代碼,編輯完成後按 Ctrl + S 保存,關閉 VBA 編輯器。

Sub 進入郵件合併()
    Dim objWord As Object
    
    ' 創建一個 Word 應用程序對象
    Set objWord = CreateObject("Word.Application")
    
    ' 打開 Word 文檔(替換為你的 Word 文檔的路徑)
    objWord.Documents.Open "F:\工作文件\郵件合併模板.docm"
    
    ' 讓 Word 應用程序可見
    objWord.Visible = True
    
    ' 保存當前工作簿
    ThisWorkbook.Save
    
    ' 退出 Excel
    Application.Quit
End Sub

Excel 切換到 開發工具 選項卡,點擊 插入 - 按鈕(窗體控件),在工作表上畫出一個按鈕,繪製好後右擊按鈕,點擊 指定宏,選擇剛才創建的 進入郵件合併。點擊按鈕後,便會自動打開郵件合併模板,並且關閉 Excel 程序。

Excel 中創建進入文檔並關閉 Excel 的宏

接著,打開 郵件合併模板.docm,按 Alt + F11 進入 VBA 編輯器,點擊 插入 - 模塊,在編輯框中插入以下代碼,編輯完成後按 Ctrl + S 保存,關閉 VBA 編輯器。

Sub 執行郵件合併()
    ' 執行郵件合併
    ActiveDocument.MailMerge.Execute
    
    ' 如果需要,可以在這裡添加其他後續操作
End Sub

Word 無法像 Excel 一樣指定宏到一個按鈕上,但可以通過快捷鍵運行宏。在 郵件 選項卡中右擊鼠標,選擇 自定義功能區。進入到 Word 選項,點擊 鍵盤快捷方式:自定義將更改保存在文檔 選擇 郵件合併模板.docm,然後在 類別 中找到 ,選擇 執行郵件合併,添加一個快捷鍵組合,我這裡分配的是 Alt + Shift + N,分配好後點擊 指定

Word 中分配快捷鍵給宏

💭 尾言#

除了以上方式,你也可以利用其它的工具來實現,比如 Power Automate、python-docx 庫、Quicker 等方式,巧妙運用一些自動化工具,可以幫助你高效完成重複性的工作任務,早日實現應摸🐟盡摸🐟。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。