2017-12-18 8 views
0

vba를 사용하여 워크 시트를 pdf 파일로 저장하려고합니다. 워크 시트는 A4 페이지보다 넓으며 몇 가지 모양 (좌우)이 있습니다. 워크 시트를 하나의 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 파일은 예상 한 페이지 대신 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

또한 activesheet가 sheet("Helpsheet") 이라고 가정합니다. 인쇄 영역에는 인쇄 범위의 주소가 필요합니다.

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

당신의 의견에 감사드립니다. 내가 ThisWorkbook.Sheets ("Helpsheet")를 사용한 이후 activesheet는 실제로 시트 ("Helpsheet")입니다. 활성화하십시오. 귀하의 솔루션을 사용해 보았지만 여전히 PDF 파일은 4 페이지입니다. – Roosz0rd