2017-12-18 262 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頁而不是預期的1頁。所以看起來這個打印區域沒有正確定義。我究竟做錯了什麼?

回答

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(「幫助表」),所以活動頁面實際上是工作表(「幫助表」)。我已經嘗試了您的解決方案,但仍然是PDF文件是4頁。 – Roosz0rd