2017-03-06 2 views
0

シートを別のブックにコピーするときに何らかの形(行の高さと列の幅)を変更するコードに関する質問があります。これはpdfに印刷する前の中間ステップとして使用されます。シート「1」、「2」および「3」では、A4ページを1つしかカバーしない印刷領域が設定されるが、選択されたシートを新しい一時的ブックにコピーすると、すべての行および列が増加する増加されたピクセル)を使用して、印刷領域が現在いくつかのページをカバーするようにします。誰も助けることができますか?フォーマットを変更せずにシートをコピーするVBA

Sub Print_to_pdf() 

Application.ScreenUpdating = False 

Set Output_Sheets = Sheets(Array("1", "2", "3")) 

Output_Sheets.Select 
Output_Sheets.Copy 

ChDir "XXX" 
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
    "XXX\Print_to_pdf".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
    :=False, OpenAfterPublish:=False 

ActiveWorkbook.Close savechanges:=False 

Application.ScreenUpdating = True 

End Sub 
+0

正確なコピーを保存し、不要なシートを取り除いてからPDFに印刷しようとしましたか?もちろん、これはちょっと面倒ですが、これと同時に(ほぼ確実に)フォーマットを維持する必要があります。 – Ralph

+0

はい、これはうまくいきますが、コードは一連のコードの一部であり、10-20種類の異なるpdfを異なるシートに保存するので、pdfに "古い方法"で印刷するとプロセスが長くなることがあります。しかし、返信いただきありがとうございます! – RASMP

+0

実際にはっきりしませんが、コピーしたシートやオリジナルのシートを書き出しますか?コピーしたシートをエクスポートする場合:元のシートをそのコードと共にエクスポートしようとしましたか?問題はコピーアクションではなく、不正確なエクスポートであると私は想像することができます。私はそのシートをエクスポートすることは、シートを印刷することとは異なる結果をもたらすことに慣れています(不正確なpdfエクスポートエンジンによる)。 –

答えて

0

これらのシートをコピーしようとした理由はまだ分かりません。シートをエクスポートするには、単にこれを使用することもできます。

Sub Print_to_pdf() 
    Dim Output_Sheets As Sheets 

    Application.ScreenUpdating = False 

    Set Output_Sheets = Sheets(Array("1", "2", "3")) 
    Output_Sheets.Select 

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
     "c:\temp\Print_to_pdf.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False, OpenAfterPublish:=False 

    Application.ScreenUpdating = True 

End Sub 

エクスポートしたPDFファイルと任意のプリンタとの間に違いがある場合

が、これはおそらく、プリンタドライバとPDFエクスポートエンジンの違いによるものです。これは、両方の(プリンタとエクスポート)に適合するまで、これを回避するために私が見る唯一の方法です。

関連する問題