2017-12-18 15 views
0

ワークシートをvbaを使用してpdfファイルとして保存しようとしています。ワークシートはA4ページより幅が広く、いくつかの図形が横方向に含まれています。私はワークシートを1つのA4ページに収めたいので、画面に表示されるように再スケーリングする必要があります。私は次のコードを使用しています:ワークシートをPDFで保存します。

Sub Print_PDF() 

Dim sFilename As String 

Worksheets.Add.Name = "Helpsheet" 
sFilename = "G:\anything\test.pdf" 
ThisWorkbook.Worksheets("Newsletter").Range("A2:D81").CopyPicture xlScreen, xlBitmap 

ThisWorkbook.Sheets("Helpsheet").Activate 
ThisWorkbook.Sheets("Helpsheet").Paste 
ActiveSheet.PageSetup.PrintArea = ThisWorkbook.Sheets("Helpsheet").Range("A1:O86") 
With ActiveSheet.PageSetup 
    .Orientation = xlPortrait 
    .FitToPagesWide = 1 
    .FitToPagesTall = 1 
End With 

ThisWorkbook.Sheets("Helpsheet").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sFilename, quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 

Application.DisplayAlerts = False 
ThisWorkbook.Sheets("Helpsheet").Delete 
Application.DisplayAlerts = True 

End Sub 

コードは実際には、期待される場所にPDFファイルを保存します。ただし、PDFファイルは予想される1ページの代わりに4ページです。したがって、printareaは正しく定義されていないようです。私は間違って何をしていますか?

答えて

3

この例のようにPageSetupパラメータを調整しようとしましたか?

Application.PrintCommunication = False 
With ActiveSheet.PageSetup 
    .Orientation = xlLandscape 
    .Zoom = False 
    '.PrintArea = Worksheets(ReportWsName).UsedRange 
    .FitToPagesWide = 1 
    '.FitToPagesTall = 1 
End With 
Application.PrintCommunication = True 

明示的に.Zoomをfalseに設定することが重要です。

出典: excel vba not exporting pagesetup to pdf correctly

+0

ズームをfalseに設定すると、トリックがかかりました。私の一日を保存してくれてありがとう! – Roosz0rd

0

sheet("Helpsheet") 印刷領域には印刷範囲のアドレスが必要です。

ActiveSheet.PageSetup.PrintArea = ThisWorkbook.Sheets("Helpsheet").Range("A1:O86").Address 
+0

コメントありがとうございました。私がThisWorkbook.Sheets( "Helpsheet")を使用して以来、activesheetは確かにシート( "Helpsheet")です。あなたの解決策を試しましたが、PDFファイルは4ページです。 – Roosz0rd

関連する問題