【问题标题】:print worksheets to pdf将工作表打印为 pdf
【发布时间】:2015-02-26 04:59:46
【问题描述】:

我正在编写一个宏来浏览我的工作簿中的所有工作表。

我想要完成的是将每个工作表导出为 pdf,并根据特定单元格 (C8) 命名每个工作表的名称。

这是我目前所拥有的(我还是个初学者):

Sub print_pdf()

    Dim wb As String
    Dim ws As String
    Dim rng As Range
    Dim I As Integer    

    'For Each ws In wb.Worksheets
     ws = Activeworkbooks.Worksheets.Count

    For I = 1 To ws
    Set wb = ActiveWorkbook
    Set rng = ws.Range("C8")

    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ws.Range("C8"),      Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

Next ws    
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我发现您发布的代码存在一些问题。这应该可以帮助您入门,它不包括错误检查(C8 中存在有效值、文件不存在等)

    Sub print_pdf()
    
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim rngFileName As String
    Dim I As Integer
    
    Set wb = ActiveWorkbook
    
    For I = 1 To Worksheets.Count
        wb.Worksheets(I).Activate
        rngFileName = "C:\Temp\" & Range("C8").Value & ".pdf"
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            rngFileName, Quality:=xlQualityStandard, _
            IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
    Next I
    End Sub
    

    我在 Excel 2010 上测试了代码,它运行良好。

    【讨论】:

      【解决方案2】:

      类似这样的东西,包括错误处理以捕获工作表名称的任何问题

      注意:

      1. For each ws 优于按张数循环
      2. 保存工作表前无需激活工作表
      3. 此代码保存到与ActiveWorkbook 相同的路径
      4. 错误处理对于无效的文件保存名称很重要
      5. 如果您在 C8 中有重复值,则在导出时将覆盖较早的值,可以修改代码来对此进行测试

      代码

      Sub ToPDF()
      Dim ws As Worksheet
      Dim strMsg As String
      If ActiveWorkbook.Path = vbNullString Then Exit Sub
      For Each ws In ActiveWorkbook.Sheets
      On Error Resume Next
      ws.ExportAsFixedFormat xlTypePDF, ActiveWorkbook.Path & "\" & ws.[C8]
      If Err.Number <> 0 Then strMsg = strMsg & ws.Name & vbNewLine
      On Error GoTo 0
      Next
      If Len(strMsg) > 0 Then MsgBox strMsg, vbCritical, "errors"
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2014-04-08
        • 1970-01-01
        • 2010-10-02
        • 2011-08-21
        • 2016-09-24
        • 2018-11-15
        • 2016-03-16
        • 1970-01-01
        • 2013-05-17
        相关资源
        最近更新 更多