如何在 Word 中使用合併列印時,如何將每一筆記錄輸出成一個檔案?如何能將每一筆記錄輸出成PDF檔?

這樣的輸出在學校行政或教師教學時常會有需要用到。然而,當你在合併列時,Word 只能讓你輸出合併列印檔:

(1) 全部:將所有記錄集合成一個檔案。

(2) 目前記錄:僅輸出目前顯示的頁面記錄成一個檔案。

(3) 從...到...:指定一個範圍輸出成一個檔案。

(未設定標題)

如果要將每一筆記錄輸出成一個檔案,或是將每一筆記錄輸出成PDF檔,我想,這是人工智慧必須要上場了,藉助 ChatGPT 囉!

1. 將每一筆記錄輸出成一個檔案

ChatGPT 指令:如何將Word的合併列印結果,產生每一筆記錄以一個檔案儲存。

ChatGPT 提供了一個 VBA 程式來協助執行:(複製程式碼)

Sub SaveMergeResults()
    Dim MainDoc As Document, TargetDoc As Document
    Dim i As Long
    
    Set MainDoc = ActiveDocument
    With MainDoc.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        For i = 1 To .DataSource.RecordCount
            .DataSource.FirstRecord = i
            .DataSource.LastRecord = i
            .Execute False
            Set TargetDoc = ActiveDocument
            TargetDoc.SaveAs2 "C:\Output\" & TargetDoc.MailMerge.DataSource.DataFields("FieldName").Value & ".docx"
            TargetDoc.Close False
        Next i
    End With
End Sub


在 Word 中開啟「開發人員/VBA」,插入模組,並且貼上這個程式碼。

你必須修改「C:\Output\」為你真實的檔案路徑。本例:V:\Google Downloads\合併列印。按下執行。

(未設定標題)

本例中有 10 筆記錄,因此會得到 10 個 Word 合併列印後的檔案,每一個檔案裡僅有一筆記錄。

(未設定標題)

2. 將每一筆記錄輸出成PDF檔

ChatGPT 指令:如何將Word的合併列印結果,產生每一筆資料以一個檔案儲存,並且以指定「姓名」欄位裡的每一筆資料做為檔案名稱,儲存的是PDF格式。

得到以下的 VBA 程式碼:

Sub MergeToPDF()
    Dim wdOutput As Document
    Dim wdDoc As Document
    Set wdDoc = ActiveDocument
    Dim wdFileName As String
    Dim recordNum As Long, totalRecords As Long

    totalRecords = wdDoc.MailMerge.dataSource.RecordCount
    wdDoc.MailMerge.dataSource.FirstRecord = ActiveDocument.MailMerge.dataSource.ActiveRecord
    wdDoc.MailMerge.dataSource.LastRecord = wdDoc.MailMerge.dataSource.RecordCount

    For recordNum = 1 To totalRecords
        With wdDoc.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .dataSource
                .FirstRecord = recordNum
                .LastRecord = recordNum
                .ActiveRecord = recordNum
                If .DataFields("姓名").Value <> "" Then
                    wdFileName = .DataFields("姓名").Value
                Else
                    wdFileName = "Unnamed_Document_" & recordNum
                End If
            End With
            .Execute Pause:=False
        End With
        
        Set wdOutput = Application.ActiveDocument
        wdOutput.ExportAsFixedFormat OutputFileName:= _
            "C:\Output\" & wdFileName & ".pdf", ExportFormat:=wdExportFormatPDF

        wdOutput.Close False
    Next recordNum
End Sub

修改「C:\Output\」為你的真實路徑,並且修改 FileNameField  為你要用以命名的欄位。

本例指定「姓名」欄位做為檔名,路徑設定為「V:\Google Downloads\合併列印\」。

Word-合併列印時,一鍵將每一筆記錄輸出成個別的PDF檔

執行後,得到了 10 個 PDF 檔。

Word-合併列印時,一鍵將每一筆記錄輸出成個別的PDF檔

學不完.教不停.用不盡文章列表

arrow
arrow
    文章標籤
    Word 合併列印 PDF
    全站熱搜
    創作者介紹
    創作者 vincent 的頭像
    vincent

    學不完.教不停.用不盡

    vincent 發表在 痞客邦 留言(0) 人氣()