2017-03-06 88 views
0

我有關於我的代碼以某種方式改變了格式(行高和列寬)的一個問題,當我一些薄片複製到另一個工作簿。在紙張「1」,「2」和「3」中,紙張設置有僅覆蓋一個A4頁面的打印區域,但是當代碼將所選紙張複製到新的臨時工作簿時,所有行和列都增加了增加像素),以便打印區域現在覆蓋幾頁。誰能幫忙?VBA複製片材,而不改變格式

Sub Print_to_pdf() 

Application.ScreenUpdating = False 

Set Output_Sheets = Sheets(Array("1", "2", "3")) 

Output_Sheets.Select 
Output_Sheets.Copy 

ChDir "XXX" 
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
    "XXX\Print_to_pdf".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
    :=False, OpenAfterPublish:=False 

ActiveWorkbook.Close savechanges:=False 

Application.ScreenUpdating = True 

End Sub 
+0

你試過節省的精確拷貝,刪除不必要的表,然後打印到PDF。當然,這有點麻煩,但同時這應該(幾乎肯定)保持格式。 – Ralph

+0

是的,這工作,但代碼編碼的序列組合節省10-20不同的PDF的不同表的一部分,所以打印到PDF「老辦法」將導致過程中採取的方式長。但是,謝謝你的回覆! – RASMP

+0

這不是真正清楚,但你導出複印的紙張或原片?如果您導出複印的圖紙:您是否嘗試使用該代碼導出原始圖紙?我可以想象這個問題不在複製行爲中,而是一個不準確的導出。我已經習慣了在一個不同的結果比印刷用紙使出口表的結果(由於不準確的PDF導出引擎)。 –

回答

0

我還是不明白你爲什麼試圖複製這些表。要導出表,你可以簡單地使用這樣的:

Sub Print_to_pdf() 
    Dim Output_Sheets As Sheets 

    Application.ScreenUpdating = False 

    Set Output_Sheets = Sheets(Array("1", "2", "3")) 
    Output_Sheets.Select 

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     "c:\temp\Print_to_pdf.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False, OpenAfterPublish:=False 

    Application.ScreenUpdating = True 

End Sub 

如果在導出的PDF文件和任何打印機之間的差異那麼這可能是由於打印機驅動程序和PDF導出引擎的差異。我看到解決這個問題的唯一方法就是解決這個問題,直到它適合兩者(打印機和導出)。