2016-12-30 30 views
5

投稿のフォーマットエラーについてはお詫び申し上げますが、これはサイトを初めて使用したためです。Excel - VBAコードを使用して複数のシートを.pdfにエクスポート

私はボード上でこの質問を見てきましたが、それはかなり私の質問に答えていませんが、それは助けるために探している人のために有用である可能性がある - excel vba not exporting pagesetup to pdf correctly

私はそれぞれに指定された範囲の正確に同じ問題を抱えていますコードを使用して.pdf出力を作成するときにシートがエクスポートされていません。エクスポートされるのは各シートにあるすべてのものなので、各ワークシートは2ページ以上にわたっています。各シートの印刷範囲は、指定された領域を1枚に印刷するように設定される。

私は上記のリンクでコードを修正しようとしましたが、複数のシートでは機能しないようです。

は、私はその非適応形で使用しようとしていたコードは、もう少し、私は私のプリントがそれぞれに及ぶことを確立して実験した後

Sub ClientPDFOutput() 

If Sheets("File Data").Range("FD_FileName") = "" Then 
' MsgBox ("Save the file before exporting to a .pdf fomrat"), vbInformation, "Save File" 

' Exit Sub 
    Else 
End If 

ActiveSheet.Unprotect Password:=strPassword 

Range("UI_Status") = "Creating client PDF output - Please wait" 

SelectSheets 

Application.ScreenUpdating = False 

Sheets(arrSheets).Select 

strFilename = "Test" 

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=True, _ 
    OpenAfterPublish:=False 

Sheets("User Input").Select 

Range("UI_Status") = "Client .pdf output created and saved" 

ActiveSheet.Protect Password:=strPassword 

Application.ScreenUpdating = True 

MsgBox ("The client output in .pdf format has been created and saved"), vbInformation, ".pdf Created" 

End Sub 

Sub SelectSheets() 

Dim rngSheets As Range 

Set rngSheets = Sheets("File Data").Range("D_OutputSheets") 

If rngSheets.Count = 1 Then 
    arrSheets = rngSheets.Value2 
    Else 
    arrSheets = Application.Transpose(rngSheets.Value2) 
End If 

End Sub 

の下TIA

ですページのうち、これらが訂正されました。

シート配列の一部として選択される前に、各シートの印刷範囲を選択するコードをいくつか追加しましたが、配列の最初のシートの印刷範囲がすべてのシートに複製されています...シート1の範囲がB4:P61で、シート2の印刷範囲がB4:M48の場合、シート2が選択されたときにシート2はB4:P61を選択しています。

これは、シート1には正しいが残りのシートに対しては間違った選択範囲を印刷します。

すべてのシート、ファイル、エクスポートを選択して手動で行うと、すべてのシートの印刷範囲がエクスポートされるので、これが記録されてルーチンに入れられると無視されます。

おかげ

答えて

0

IgnorePrintAreasプロパティを変更してみてください。

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=False 
0

私はあなたのページ設定は単一のページにそれを修正することを確認するために、以下のものを使用して助言する:

With ActiveSheet.PageSetup 
.FitToPagesWide = 1 
.FitToPagesTall = 1 
End With 

は、あなたの好みに合わせ、または維持すると文の第一または第二のラインのいずれかを削除します。どちらも。

さらに、私はselection.ExportAsFixedFormatを持っています。選択した領域が正しいことを確認するか、固定範囲を使用してください。最も遠い行/列を動的に決定し、それを変数PrintRangeに追加することもできます。 Getting the actual usedrange。 セットIgnorePrintAreas:=False

Dim PrintRange As Range 

Set PrintRange = Range("A1:XX100") 

PrintRange.ExportAsFixedFormat Type:=xlTypePDF, _ 
           Filename:=Filename, _ 
           Quality:=xlQualityStandard, _ 
           IncludeDocProperties:=True, _ 
           IgnorePrintAreas:=False, _ 
           OpenAfterPublish:=False 
関連する問題