Ulangi semua halaman dan dapatkan baris pertama dengan teks

Saya ingin menggunakan VBA untuk mengulang halaman dokumen MS Word saya dan mencetak setiap halaman sebagai PDF secara terpisah. Nama setiap file PDF harus berada di baris pertama dengan teks di setiap halaman. Saya mencoba sesuatu seperti:

Sub printSepPdf()

        Dim pages As Page
        Dim p As Paragraph
        
    
    
        For Each pages In ActiveDocument
            ActiveDocument.ExportAsFixedFormat OutputFileName:=p.Range.Sentences(1) & ".pdf", ExportFormat:=wdExportFormatPDF, _
            OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
            wdExportFromTo, From:=1, To:=1, Item:=wdExportDocumentContent, _
            IncludeDocProps:=False, KeepIRM:=False, CreateBookmarks:= _
            wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=False, UseISO19005_1:=False
    
    Next pages
    
     
    End Sub

person Gordobobo    schedule 02.08.2020    source sumber
comment
Jika ini adalah dokumen yang dihasilkan oleh gabungan surat, lihat Membagi Hasil Gabungan ke Dokumen Terpisah atau, lebih baik lagi, Mengirim Hasil Gabungan Surat ke File Individual di Tips dan Tips Penggabungan Surat Rangkaian trik di msofficeforums.com/mail-merge /21803-mailmerge-tips-tricks.html   -  person macropod    schedule 03.08.2020


Jawaban (1)


Ada beberapa masalah dengan kode Anda... ActiveDocument sebenarnya tidak memiliki referensi ke Halaman secara langsung... Anda tidak menyetel Paragraf p di mana pun... nomor halaman di-hardcode dalam ekspor.

Coba yang berikut ini. Ini mengulang setiap halaman dokumen (dengan memperhatikan bahwa dokumen harus dalam tampilan PrintLayout), lalu mendapatkan kalimat pertama, menguranginya sebanyak 1 untuk menghapus karakter akhir para, dan membuat nama file PDF. Kemudian menyimpan seluruh halaman sebagai PDF.

Sub printSepPdf()

    Dim PageCounter As Long
    Dim PageFirstSentence As Range
    Dim PDFName As String
    
    For PageCounter = 1 To ActiveDocument.Windows(1).Panes(1).pages.Count
        Set PageFirstSentence = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, PageCounter)
        PageFirstSentence.Expand (wdSentence)
        PageFirstSentence.SetRange PageFirstSentence.Start, PageFirstSentence.End - 1
        PDFName = PageFirstSentence & ".pdf"
        
        ActiveDocument.ExportAsFixedFormat OutputFileName:=PDFName, _
        ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, _
        OptimizeFor:=wdExportOptimizeForPrint, _
        Range:=wdExportFromTo, _
        From:=PageCounter, _
        To:=PageCounter, _
        Item:=wdExportDocumentContent, _
        IncludeDocProps:=False, _
        KeepIRM:=False, _
        CreateBookmarks:= _
        wdExportCreateHeadingBookmarks, _
        DocStructureTags:=True, _
        BitmapMissingFonts:=False, _
        UseISO19005_1:=False
        
    Next

End Sub
person TechnoDabbler    schedule 03.08.2020