2017-07-19 94 views
0

以下是我正在使用的代码。这工作正常,并将前两张转换为风景。但我不知道为什么它不会将sheet3和sheet4转换为横向。有人可以帮我这个: -如何将多个工作表转换为PDF横向

Public Sub SaveSheetsAsPDF() 

    Dim wksAllSheets As Variant 
    Dim wksSheet1 As Worksheet 
    Dim strFilename As String, strFilepath As String 

    'Set references up-front 
    Set wksSheet1 = ThisWorkbook.Sheets("Sheet1") 
    wksAllSheets = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4") 
     For Each sh In wksAllSheets 
     Sheets(sh).PageSetup.Orientation = xlLandscape 
    Next 
    'strFilepath = "C:\" 

    'Create the full Filename using cells D6, E6 and F6 
    With wksSheet1 
     'Assemble the string cell-by-cell, "D6 E6-F6" 
     strFilename = strFilepath & .Range("D6").Value & " " & _ 
            .Range("E6").Value & "-" & _ 
            .Range("F6").Value & ".pdf" 
    End With 

    'Save the Array of worksheets (which will be selected) as a PDF 
    ' ThisWorkbook. 
    Sheets(wksAllSheets).Select 
    ActiveSheet.ExportAsFixedFormat _ 
       Type:=xlTypePDF, _ 
       Filename:=strFilename, _ 
       Quality:=xlQualityStandard, _ 
       IncludeDocProperties:=True, _ 
       IgnorePrintAreas:=False, _ 
       OpenAfterPublish:=True 

    'Make sure all the worksheets are NOT left selected 
    wksSheet1.Select 

End Sub 
+0

FWIW,你的代码为我工作。 – YowE3K

+0

当时是否只有一个工作簿打开?我想知道'Sheets(sh).PageSetup.Orientation = xlLandscape'(它相当于'ActiveWorkbook.Sheets(sh).PageSetup.Orientation = xlLandscape')是否可能在错误的工作簿上运行。 (但是你正在使用Sheets(wksAllSheets)。稍后选择',所以它**应该是OK。) – YowE3K

+0

你可以通过放置很多'Debug.Print表单(“Sheet2”)来调试它。PageSetup.Orientation &“|” &Sheet(“Sheet3”)。PageSetup.Orientation'通过您的代码声明,看看它是否随时写出'2 | 2'(2为横向,1为纵向),然后变回'2 | 1' - 如果确实如此,那意味着将其设置为横向工作正在发挥作用,但之后又有一些改变。 – YowE3K

回答

-1

请试试这个。在运行它之前,设置strFilename变量。

,如果它仍然失败,出口每片手动,只是要找准失败片

Public Sub SaveSheetsAsPDF() 

    Dim wksAllSheets As Sheets 
    Set wksAllSheets = Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")) 

    Dim sh As Worksheet 
    For Each sh In wksAllSheets 
     sh.PageSetup.Orientation = xlLandscape 
    Next 

    Dim strFilename As String 
    strFilename = "C:\Users\xxxxx\Desktop\Book1.pdf" ' set up path to test file 

    wksAllSheets.Select 
    ActiveSheet.ExportAsFixedFormat _ 
         Type:=xlTypePDF, _ 
        Filename:=strFilename, _ 
        Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, _ 
      IgnorePrintAreas:=False, _ 
      OpenAfterPublish:=True 

    Sheets("Sheet1").Select 

End Sub