我有一个 Excel 工作簿,最终用户在其中进行一些选择,根据这些选择,将需要保存为单个 PDF 的工作表列在工作表 1 的单元格 B10 中,如下所示(E1、E2、E3、E4......)
现在我已经尝试了下面这个宏,但是它不能正常工作,原因在代码下面给出:
Sub pdff()
Sheets("E1").Activate
ActiveSheet.UsedRange.Select
Sheets("E2").Activate
ActiveSheet.UsedRange.Select
Sheets("E3").Activate
ActiveSheet.UsedRange.Select
ThisWorkbook.Sheets(Array("E1", "E2","E3")).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Damon\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
代码存在的问题:
- 代码运行后,它会将工作表组合在一起,必须手动取消组合。
- 代码保存了设置打印区域之外的区域(如果我手动将每张纸保存为 PDF,则不会发生这种情况)
- 该代码不是动态的,它不会从单元格 B10 中获取工作表名称
答案1
和:
此版本将满足您的所有目标:
Sub pdff()
Dim s As String, ary, a, sh As Worksheet
Set sh = ActiveSheet
s = Sheets("Sheet1").Range("B10").Text
ary = Split(s, ",")
For Each a In ary
Sheets(a).Select
Sheets(a).Activate
Sheets(a).Range(ActiveSheet.PageSetup.PrintArea).Select
Next a
ThisWorkbook.Sheets(ary).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Damon\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
sh.Select
End Sub
只要确保你有一个工作表1以及E1床单。