【问题标题】:print excel worksheets to multiple pdf将excel工作表打印到多个pdf
【发布时间】:2014-04-08 00:19:50
【问题描述】:

我找到了一个将 Excel 工作表打印为 PDF 的宏,我希望能够跨多个工作表执行此操作,而无需使用工作表名称而是使用工作表索引。 我想根据每个工作表中的范围保存pdf(所有工作表上的范围都相同)。

这是我所拥有的:

Sub exceltoPDF1()
'Saves the excel print area to a PDF file

Dim fp As String
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range

Worksheets(1).Activate
Set rng = Worksheets(1).Range("A1")
'\\MNACPFS01\Home\sramdeo\Desktop\stuff
i = rng
fp = "\\MNACPFS01\Home\sramdeo\Desktop\stuff "
'fp = "H:\2013_FY148\07_OCT13\4. PROGRAM DOCS\APR\ " & "rng.pdf"""
Set wb = ActiveWorkbook
Set ws = Worksheets(1)

ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=i, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True


End Sub

【问题讨论】:

    标签: vba excel printing pdf-generation


    【解决方案1】:

    这将使用工作表的索引通过您的工作簿wb 中包含的所有工作表:

    Sub exceltoPDF1()
        'Saves the excel print area to a PDF file
    
        Dim fp As String
        Dim wb As Workbook
        Dim rng As Range
    
        Set wb = ActiveWorkbook
    
        Dim intWS As Integer
        For intWS = 1 To wb.Worksheets.Count
            With wb.Worksheets(intWS)
                Set rng = .Range("A1")
                '\\MNACPFS01\Home\sramdeo\Desktop\stuff
                i = rng
                fp = "\\MNACPFS01\Home\sramdeo\Desktop\stuff "
                'fp = "H:\2013_FY148\07_OCT13\4. PROGRAM DOCS\APR\ " & "rng.pdf"""
    
                .ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=i, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=False, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
            End With
        Next intWS '<--- Change this from "i" to "intWS"
    
    End Sub
    

    【讨论】:

    • 嘿,所以我试了一下,我得到了编译错误:Invalid Next control variable reference
    • @user3384931;我的错。这是因为我以i 作为索引开始,但看到您已经在代码中使用了它,所以我将其更改为intWS,但忘记更新Next 旁边的那个。我只是在答案中更改了它。
    • 没有问题 @user3384931;如果这是您正在寻找的,您可以接受它作为答案。谢谢
    • 如果您只想打印某些工作表,但要按连续顺序打印,该怎么办。如果指定范围内有值,也会打印出来。
    • @user3384931;我不确定我明白你的意思...For intWS = 1 To wb.Worksheets.Count 是连续的。另外,您的意思是如果指定范围内没有nothing,这将打印even
    【解决方案2】:

    Sub Cetak_Sampul()

    Dim StartmRow As Integer
    Dim EndmRow As Integer
    Dim Msgm As String
    Dim a As Integer
    
    Sheets("Cvr").Activate
    StartmRow = Range("RA")
    EndmRow = Range("RW")
    
    If StartmRow > EndmRow Then
        Msgm = "ERROR" & vbCrLf & "Record awal ga boleh lebih dari record akhir!"
        MsgBox Msgm, vbCritical, APPNAME
    End If
    
    For a = StartmRow To EndmRow
        Range("ON") = a
        If Range("PR") Then
            ActiveSheet.PrintPreview
        Else
            ActiveSheet.PrintOut
        End If
    Next a
    

    结束子

    (如何获取打印为pdf,文件名保存在范围内(“ON”) 文件是here 修剪的

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 1970-01-01
      • 2019-06-16
      • 2012-07-16
      • 2012-10-02
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多