2017-08-14 5 views
0

複数のシートを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 
+0

私はお返事質問を編集しました。また、ShtNamesの個々の配列変数はShtNames(1)、ShtNames(2)がすべて正常に動作するように適切ですが、単一のselect文で指定されたシートを選択することはできません。 –

+0

https://stackoverflow.com/questions/14404650/save-multiple-sheets-to-pdf – Luuklag

+0

[複数のシートを.pdfに保存](https://stackoverflow.com/questions/14404650/save-multiple)の可能な複製-sheets-to-pdf) – Wolfie

答えて

0

OPの初期の問題が解決されたようです。逆にシートを印刷する方法について質問するように更新答えは今の答え の下部に含まれているあなたの宣言ShtNamesコードでj = 0を設定してみてください、それに値を割り当てる:

私はで任意のインデックスの仕様が表示されませんあなたのコードの先頭に、あなたの配列はすべて0でインデックスされていると仮定します。

あなたDo WhileループがあなたのShtNames -array内の要素にアクセスするためのカウンタjを使用して、しかし、ShtNames(0)が最初の要素である、とShtNames(1)が第二であるとして、あなたは、その配列の2番目の要素を(アクセスすることによって開始するように私には思えます素子)。

最後のシート名を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 
+0

はい。私はそれを得てそれを解決した。しかし、私には1つの問題があります。私はShtNames配列の順序に従ってページを印刷したい(つまり、pdfは逆順でなければならない)。最後のページが最初に来て最初のページが最後に来るはずです。ここのヘルプは高く評価されます。 –

+0

'ShtNames'を逆順に割り当てることをお勧めします。すなわち、 ' j = UBound(ShtNames) ' ' Do While'ループで 'j = j-1'を使います。 これで問題は解決しますか? – Prebsus

関連する問題