我希望有人可以帮助我。
我有一些代码可以在一个工作簿中选择一系列工作表,并将它们保存为一个PDF文件。目前,这些工作表专门编入VBA。
我想让它更具动态性,并让代码读取从一系列单元格中选择的工作表,其中包含我想要选择的每个工作表的标题,以便在需要时可以在其他地方轻松使用此代码。
或者,我的所有工作表都是有序的,所以我只需要选择前14个工作表,第15个被称为“停止在PDF上”,其后是一些输入文件和配置页等。所以可能有一些代码选择所有工作表,直到达到具有该特定名称的工作表?
到目前为止,这是我的代码:
Sub AutoPDFReport()
Dim myDir As String, mySht As String
myDir = "I:\" & Sheets("Config").Range("N7").Value
mySht = Sheets("Config").Range("N9").Value
On Error Resume Next
MkDir myDir
On Error GoTo 0
Sheets(Array("Overview_For_Email", "XXXX", _
"XXXX", "XXXX", _
"XXXX", "XXXX", _
"XXXX", "XXXX", _
"XXXX", "XXXX", _
"XXXX", "XXXX", _
"XXXX", "XXXX")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=myDir & "\" & mySht & Format(Now, "yyyy") & "-" & Format(Now, "mm") & "-" & Format(Now, "dd") & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Worksheets("SalesReportSlim").Select
End Sub
XXXX是我的工作表。
由于
答案 0 :(得分:0)
这对我有用。它使用您的第二种方法,在工作表中循环,直到找到“在PDF上停止”,并保存为PDF。只需填写正确的目录即可。请注意,字符串比较似乎区分大小写,与excel中的大多数情况不同,因此请小心键入它。
Sub ExportToPDF()
'cycle through sheets in workbook
For Each ws In ActiveWorkbook.Worksheets
'save sheetname and check it - if not "stop", then save as pdf
Dim newname As String
newname = ws.Name
MsgBox (newname)
If newname = "Stop On PDF" Then
Exit Sub
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\[put in your address here]\" & newname & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next ws
End Sub