2012-08-06 49 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

相关问题