我录制了一个宏。
如果所有工作表都可见,但是当我隐藏工作表时,它将无法保存为pdf。
这是代码。
Sub save_pdf()
'
' save_pdf Macro
'
'
Sheets(Array("TITLE", "CML", "CLUSTER", "ORS", "MOBILE", "YPS", "DEVICES", "PORTS")).Select
Sheets("TITLE").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _ Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True,_ IgnorePrintAreas:=False, OpenAfterPublish:=True
Sheets("MAIN").Select
End Sub
答案 0 :(得分:1)
这样的事情:
Sub ExportVisible()
Dim shts, sht As Worksheet, s, i As Long
shts = Array("TITLE", "CML", "CLUSTER", "ORS", "MOBILE", "YPS", "DEVICES", "PORTS")
i = 0
For Each s In shts
Set sht = ActiveWorkbook.Sheets(s)
If sht.Visible = xlSheetVisible Then
i = i + 1
sht.Select (i = 1) '"replace" parameter true when i=1
End If
Next s
'Sheets("TITLE").Activate '<<EDIT: remove this
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Sheets("MAIN").Range("customer_name").Value & _
" - Project Initiation_Document.pdf ", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
答案 1 :(得分:0)
这可能是由于使用了.Select
。我们希望尽可能avoid using .Select
。相反,只需设置一个循环来遍历工作簿中的每个工作表。
Sub save_PDFs()
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
sht.ExportAsFixedFormat Type:=xlTypePDF, fileName:=Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Next sht
End Sub
但是,如果您只想要可见的工作表,请执行以下操作:
Sub save_PDFs()
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
If sht.Visible = True Then sht.ExportAsFixedFormat Type:=xlTypePDF, fileName:=Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Next sht
End Sub