[英]Printing multiple pages into PDF
我正在嘗試以PDF格式打印多張紙。 下面是代碼,但它給出了下標超出范圍的錯誤。 請幫忙
PdfFile = ActiveWorkbook.FullName
Worksheets("Report").PageSetup.Orientation = xlLandscape
i = InStrRev(PdfFile, ".")
If i > 1 Then PdfFile = Left(PdfFile, i - 1)
PdfFile = "SPC Report " & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf" 'PdfFile & "_" & Worksheets("Report").name & ".pdf"
' Export activesheet as PDF
With Worksheets("Report")
ThisWorkbook.Sheets(ShtNames).Select
.ExportAsFixedFormat Type:=xlTypePDF, Filename:="SPC Report " & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ThisWorkbook.Sheets("Report").Select
End With
這是我聲明ShtNames並為其分配值的地方。
Dim ShtNames() As String
ReDim ShtNames(1 To ActiveWorkbook.Sheets.Count / 2 + 1)
i = Sheets.Count
j = 1
Do While i > Sheets.Count / 2
ShtNames(j) = Sheets(i).Name
i = i - 1
j = j + 1
Loop
OP的最初問題似乎已經解決。 答案的底部現在包含有關如何反向打印紙張的問題的更新答案。嘗試在聲明ShtNames
並為其賦值的代碼中設置j = 0
:
我沒有在代碼的頂部看到任何索引規范,所以我假設您的數組都是0索引的。
您的Do While
循環使用計數器j
訪問ShtNames
元素,但是,在我看來,您首先訪問該數組的第二個元素(因為ShtNames(0)
是第一個元素,而ShtNames(1)
是第二個元素)。
我會懷疑,當您嘗試將最后一個工作表名稱分配給ShtNames
的最后一個索引時,索引的大小比ReDim
最初的大小大1。
要以相反的順序打印紙張,請以相反的順序分配您的ShtNames
:
Dim ShtNames() As String
ReDim ShtNames(1 To ActiveWorkbook.Sheets.Count / 2 + 1)
i = Sheets.Count
j = UBound(ShtNames)
Do While i > Sheets.Count / 2
ShtNames(j) = Sheets(i).Name
i = i - 1
j = j - 1
Loop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.