** Word 郵件(合併列印)功能強大但無法直接把匯出的文件按「資料來源」的記錄一筆一筆的儲存,本程式主要在將合併後的文件按「資料來源」的記錄一筆一筆的儲存並按「資料來源」的內容命名。**
程式如下:
'========================================================================
'「匯出個別資料」副程式
'程式碼主要利用「錄製巨集」先產生合併一筆記錄的文件
'加上 迴圈產生所有記錄的資料文件
'取出記錄中的資料產生個別資料的檔名並儲存
'========================================================================
Sub 匯出個別資料()
Source_File_Path = ActiveDocument.Path & "\" '現在檔案儲存的目錄路徑
For i = 1 To 記錄筆數 '請將「記錄筆數」改為資料來源的資料筆數
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument '設置郵件合併後結果為新Word文件
.SuppressBlankLines = True '當郵件合併主文檔中的郵件合併字段為空時空行被抑制
With .DataSource
.ActiveRecord = i '設定使用中的記錄編號(提供檔名使用)
.FirstRecord = i '記錄文件開始的記錄編號
.LastRecord = i '記錄文件結束的記錄編號
End With
.Execute Pause:=False
'取出記錄中的資料產生個別資料的檔名+儲存的目錄路徑
File_Name = Source_File_Path & .DataSource.DataFields("欄位1").Value & .DataSource.DataFields("欄位2").Value & ".docx"
'「欄位1」「欄位2」…、是資料來源的欄位名稱,按儲存檔名需求調整
End With
ActiveDocument.SaveAs2 FileName:=File_Name, FileFormat:=wdFormatXMLDocument
'儲存合併後的檔案,注意:SaveAs2 如檔案已存在會直接蓋掉舊檔
ActiveWindow.Close
Next
End Sub
說明:如果想瞭解程式詳細說明,請參考 YouTube 影片。
https://www.youtube.com/watch?v=CCumTdDgZ_c&t=6s
影片中會說明:
Word 郵件(合併列印)功能
顯示「開發人員」索引標籤
錄製巨集(錄製合併後的單一筆資料並存檔)
使用 Word VBA 將錄製的巨集改成各別儲存合併後的每一筆資料
使用 Word VBA 讀取 EXCEL 資料組成檔案名稱
使用 Word VBA 用讀取的 EXCEL 資料修改檔案名稱(錯誤處理)
執行完成的巨集
大大,請問有辦法使用 Word VBA 將 Word 郵件(合併列印)後文件按各筆記錄分別儲存加密PDF嗎?
PS.我看到這邊也有類似的做法 - 批次套印證書,自動依姓名建檔
https://youtu.be/aGjWWl-VJdw?t=100
使用 Word VBA 將 Word 郵件(合併列印)後文件按各筆記錄分別儲存成PDF,只要將存檔類型改成 PDF 就可以了。
如下:
ActiveDocument.SaveAs2 FileName:="C:\Users\username\Desktop\test.pdf", FileFormat:=wdFormatPDF
這樣就可以將 Word 文件儲存成 PDF 檔了。注意,如果要使用這個方法,需要先安裝 Microsoft Save as PDF or XPS 套件,否則會出現錯誤。這個套件可以在 Microsoft 官網上免費下載。
要存成 加密的 PDF 有點複雜,要先存成 PDF 檔,再寫一個 將 PDF 檔加密的函數,呼叫加密函數存成 加密的 PDF。