2017-09-28 7 views
0

同じ範囲の複数のシートに対してページ設定をしようとしています。しかし、シート「ダッシュボード」の1つは異なるページ設定範囲を有する。それは "D24:K73"になる予定です。以下のコードでどのように達成できますか?私はそれを修正しようとしましたが、私のスキルは望みの結果を生み出しません。VBA - 休止(未知の#)ページと異なる1ページ設定

Sub Octsaveaspdf() 
Dim ws As Worksheet 
Dim FileName As String 
Dim FilePath As String 
    For Each ws In Sheets 
    If ws.Visible Then ws.Select (False) 
    Next 

    FilePath = Range("Instructions!B16").Value 
    FileName = Range("Dashboard!Q26").Text 
    Range("$p24:$w73").Select 
    Application.PrintCommunication = False 
    With ActiveSheet.PageSetup 
    LeftMargin = Application.CentimetersToPoints(0.1) 
    .RightMargin = Application.CentimetersToPoints(0.1) 
    .FitToPagesWide = 1 
    End With 

    Application.PrintCommunication = True 
    ActiveSheet.ExportAsFixedFormat _ 
    Type:=xlTypePDF, FileName:=FilePath & "Compare " & FileName & ".pdf" _ 
    , Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=True 

End Sub 

本当にありがとうございました:)ありがとうございます!

答えて

0

エクスポートを別のプロシージャに移動し、異なる範囲で複数回コールしてエクスポートします。

以下のコードは、表示されている各シートに適用され、シート名によって異なる範囲をエクスポートします。
各エクスポートには同じ名前が付けられます。そのため、ファイル名の競合に関する問題を解消するために何かを行う必要があります。

Private FilePath As String 
Private FileName As String 

Public Sub OctSaveAsPDF() 

    Dim ws As Worksheet 

    FilePath = ThisWorkbook.Worksheets("Instructions").Range("B16") 
    FileName = ThisWorkbook.Worksheets("Dashboard").Range("Q26") 

    For Each ws In ThisWorkbook.Worksheets 
     If ws.Visible Then 
      Select Case ws.Name 
       Case "Dashboard" 
        PerformExport ws.Range("D24:K73") 
       Case "Sheet1", "Sheet2" 
        PerformExport ws.Range("A1:Z10") 
       Case Else 
        PerformExport ws.Range("P24:W73") 
      End Select 
     End If 
    Next ws 

End Sub 

Public Sub PerformExport(xpRng As Range) 
    With xpRng 
     With .Parent.PageSetup 'The parent of the range is the worksheet. 
      .LeftMargin = Application.CentimetersToPoints(0.1) 
      .RightMargin = Application.CentimetersToPoints(0.1) 
      .FitToPagesWide = 1 
     End With 

     .ExportAsFixedFormat _ 
       Type:=xlTypePDF _ 
      , FileName:=FilePath & "Compare " & FileName & ".pdf" _ 
      , Quality:=xlQualityStandard _ 
      , IncludeDocProperties:=True _ 
      , IgnorePrintAreas:=False _ 
      , OpenAfterPublish:=True 
    End With 
End Sub 
+0

私はこれを試しますが、必ずしも同じシート名を持つわけではありません。 Dashboardは定数である唯一のシートです。残りの変更。ありがとうダーレン – Simi

+0

ダッシュボードの 'Case" Dashboard "はダッシュボードのために発射され、" Case Else "は他のすべてのシート(' Case "Sheet1"、 "Sheet2" 'と'ライン - それは単なる例だった)。 –

+0

ダレン、私はあなたのコードを試しました。 1枚のpdfにすべてのシートを印刷する必要があります。同じ人に行くシートは約10〜15枚あります。ケースシート1などを取り除くことができました。 – Simi

関連する問題