2012-08-06 88 views
2

我的代碼存在的問題是要麼將工作簿中所有工作表中的所有頁面都保存起來,要麼只將頁面保存在「from」和「to」參數指定的範圍內。如何「sheetwise」將Excel工作簿保存或導出爲PDF文件?

我正在使用的excel文件有7個工作表,每個工作表可以有任意數量的頁面。例如,如果我指定要導出「從1到4」,則只有第一個工作表的前4個頁面將作爲PDF文檔導出,而不是前4個工作表的所有頁面。

有人能告訴我如何實現我想要做的?下面的代碼是不是我想要的:

application.ActiveWorkbook.ExportAsFixedFormat(
     Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, 
     path, 
     Excel.XlFixedFormatQuality.xlQualityStandard, 
     true, 
     true, 
     1, 
     4, 
     false, 
     Missing.Value); 

回答

0

這裏的答案:ActiveSheet.PageSetup.Pages.Count

-1
Public Sub Export(ParamArray ToPrint() As Variant) 

'hide all sheets 
For Each Sheet In ActiveWorkbook.Sheets 

    Sheet.Hide 

Next Sheet 

'unhide sheets to print 
For Each pageNo In ToPrint 

ActiveWorkbook.Sheets(pageNo).Show 

Next pageNo 

'do the export 
    Worksheet.ExportAsFixedFormat _ 
     Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, _ 
     Path, _ 
     Excel.XlFixedFormatQuality.xlQualityStandard, _ 
     True, _ 
     True, _ 
     Nothing, _ 
     Nothing, _ 
     False, _ 
     Missing.Value 

'unhide all sheets 
For Each Sheet In ActiveWorkbook.Sheets 

    Sheet.Show 

Next Sheet 

末次

調用它通過傳遞逗號分隔的表列表導出

Export 1, 2, 4 
+0

與策略的問題是,每次ExportAsFixedFormat()被調用它覆蓋PDF文件。換句話說,圖紙不會附加到PDF文件;相反,每次迭代循環時都會創建一個包含一個工作表的新PDF文件。我相信可以找到合併所有PDF文件的方法,但這有點笨拙。這可以使用Excel API來完成嗎? (我也想通過調用Delete()方法刪除我不想從excel文件中獲得的工作表,但這並沒有改變任何東西。) – 2012-08-06 21:04:51

+0

好吧,我想我明白你的意思了。你想說出口1 t0 4,並且它出口1到4頁,不管他們有多少頁? – Stuart 2012-08-06 21:48:47

2

如果您使用後ActiveSheet.ExportAsFixedFormat選擇多張紙我認爲它會做你想做的(只要你在每張選定的紙張上設置了打印區域)。

沿着這些線路的原始錄製的宏:

Sheets(Array("Sheet1", "Sheet2")).Select 

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "C:\Documents and Settings\yourusername\Desktop\Book1.pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= False 
+0

男人,你是一個救命的人,我被困在了幾個小時 – 2015-11-13 12:58:11

相關問題