VBA와 PDFFCreator에 의한 PDF 출력 정보
8029 단어 VBAExcelPDF 출력PDFCreatorExcelVBA
소개
일상 여러가지 있었으므로 시행착오했기 때문에 비망록으로서 남깁니다. (일본어 레퍼런스가 없기 때문에)
아마도 이런 것을 사용하는 것은 거의 없을 것 같지만, 만약 누군가의 도움이 된다고 생각해 이 엔트리를 작성했습니다.
이번 이야기는, Excel에서의 이야기로 하겠습니다만, 아마 다른 Word등에서도 똑같이 사용할 수 있을까 생각합니다.
덧붙여서, 여기에서는 소개하지 않지만, Windows 10부터 탑재되고 있는 가상 프린터 「Microsoft Print to PDF」나 Office 소프트 내에는 PDF로 보존하는 기능이 있으므로, 그쪽에서 문제 없으면 그쪽을 사용하는 편이 현명 입니다.
이런 사람에게 추천
전제 조건
시작하기 전에 다음 소프트웨어 설치 및 참조 설정이 필요합니다.
이런 느낌으로 체크를 넣어 주면 움직입니다.
PDF 출력 방법
여기까지 오면 순식간입니다.
이것을 복사하십시오.
Sub PDF_Output()
Const JobTimeout As Integer = 15
Const PDF_DPI As Integer = 300
Const PDF_CompLevel As String = "JpegMedium"
Const DistPath As String = "C:\Tmp\TestPDF.pdf"
Dim PDFCreatorQueue As Queue
Dim PrintJob As PrintJob
Set PDFCreatorQueue = CreateObject("PDFCreator.JobQueue")
'ここでPDFCreatorを選択する
Application.Dialogs(xlDialogPrinterSetup).Show
PDFCreatorQueue.Initialize
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, _
Collate:=True
If Not PDFCreatorQueue.WaitForJob(JobTimeout) Then
MsgBox ("印刷ジョブが見つからない為、PDF出力されません。")
Else
Set PrintJob = PDFCreatorQueue.NextJob
PrintJob.SetProfileByGuid ("DefaultGuid")
'Compressionなどについて
'ここで画像の圧縮率を変更…JpegMaximum(高圧縮)→JpegMinimum(低圧縮)
'写真圧縮の明示
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Enabled", "True")
'写真リサンプリングの明示
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Resampling", "True")
'写真のリサンプリング設定(DPI 300)
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Dpi", PDF_DPI)
'写真の圧縮は中圧縮設定
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Compression", PDF_CompLevel)
PrintJob.ConvertTo (DistPath)
If (Not PrintJob.IsFinished Or Not PrintJob.IsSuccessful) Then
MsgBox ("次のファイルがPDF出力できませんでした。: " & DistPath)
End If
End If
MsgBox ("オブジェクトをリリースします。")
PDFCreatorQueue.ReleaseCom
End Sub
이런 느낌입니다.
여러가지 쓰고 있습니다만, 이하만이 필요합니다.
Sub PDF_Output()
Const JobTimeout As Integer = 15
Const PDF_DPI As Integer = 300
Const PDF_CompLevel As String = "JpegMedium"
Const DistPath As String = "C:\Tmp\TestPDF.pdf"
Dim PDFCreatorQueue As Queue
Dim PrintJob As PrintJob
Set PDFCreatorQueue = CreateObject("PDFCreator.JobQueue")
'ここでPDFCreatorを選択する
Application.Dialogs(xlDialogPrinterSetup).Show
PDFCreatorQueue.Initialize
ActiveWindow.SelectedSheets.PrintOut _
Copies:=1, _
Collate:=True
If Not PDFCreatorQueue.WaitForJob(JobTimeout) Then
MsgBox ("印刷ジョブが見つからない為、PDF出力されません。")
Else
Set PrintJob = PDFCreatorQueue.NextJob
PrintJob.SetProfileByGuid ("DefaultGuid")
'Compressionなどについて
'ここで画像の圧縮率を変更…JpegMaximum(高圧縮)→JpegMinimum(低圧縮)
'写真圧縮の明示
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Enabled", "True")
'写真リサンプリングの明示
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Resampling", "True")
'写真のリサンプリング設定(DPI 300)
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Dpi", PDF_DPI)
'写真の圧縮は中圧縮設定
Call PrintJob.SetProfileSetting("PdfSettings.CompressColorAndGray.Compression", PDF_CompLevel)
PrintJob.ConvertTo (DistPath)
If (Not PrintJob.IsFinished Or Not PrintJob.IsSuccessful) Then
MsgBox ("次のファイルがPDF出力できませんでした。: " & DistPath)
End If
End If
MsgBox ("オブジェクトをリリースします。")
PDFCreatorQueue.ReleaseCom
End Sub
간단하네요.
덧붙여서, 여러가지 조사하면 Merge등도 할 수 있는 것 같네요. 편리합니다.
참고
참고할 수 있는 사이트도 적습니다만, 공식의 레퍼런스만 보면 어떻게든 할 수 있을까 생각합니다.
그리고, 설치한 폴더 내에 다른 샘플도 있으므로 그것을 참고로 하는 것도 좋을까 생각합니다.
Reference
이 문제에 관하여(VBA와 PDFFCreator에 의한 PDF 출력 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aaa_inu/items/44431c5b7451fe27ba34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)