Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环所有页面并获取第一行文本_Vba_Loops_Pdf_Printing_Ms Word - Fatal编程技术网

Vba 循环所有页面并获取第一行文本

Vba 循环所有页面并获取第一行文本,vba,loops,pdf,printing,ms-word,Vba,Loops,Pdf,Printing,Ms Word,我想使用VBA循环我的MS Word文档的页面,并将每个页面分别打印为PDF。每个PDF文件的名称必须是每个页面中文本的第一行。我在尝试以下几点: Sub printSepPdf() Dim pages As Page Dim p As Paragraph For Each pages In ActiveDocument ActiveDocument.ExportAsFixedForm

我想使用VBA循环我的MS Word文档的页面,并将每个页面分别打印为PDF。每个PDF文件的名称必须是每个页面中文本的第一行。我在尝试以下几点:

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

您的代码有一些问题。。。ActiveDocument实际上没有直接引用页面。。。你没有在任何地方设置p段。。。页码在导出中硬编码

尝试以下方法。它循环浏览文档的每一页(注意文档必须在PrintLayout视图中),然后获取第一句话,将其减少1以删除段落结尾字符,并创建PDF文件名。然后将整个页面保存为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

如果这是由mailmerge生成的文档,请参阅将合并的输出拆分为单独的文档,或者更好的是,将mailmerge输出发送到位于的mailmerge Tips and Tricks线程中的各个文件