PDFの1ページ目をJPEGに自動で変換するVBAコード【保存版】

goodIT

PDFファイルの1ページ名にあるQRコードを読み込みたいのですが、QRコードを読み込むにはJPEG等の画像ファイルでなければ読み込めません(PDFのままでは読み込めません)。

その為、PDFからJPEGへの変換をする必要が出てきました。調べてみると簡単に出来ましたので、ここで紹介します。

【参考】QRコードを読み込む方法はこちら

やりたいこと

  • PDFの表紙(1ページ目)をJPEGの画像ファイルにして出力

準備するもの

  • Windowsのパソコン
  • マイクロソフトエクセル
  • Ghostscript

手順

1.Ghostscriptのインストーラーをダウンロードします。Ghostscriptの公式サイト(https://www.ghostscript.com/download/gsdnld.html)から、Windows用のインストーラーをダウンロードしてください。最新のバージョンをダウンロードすることをお勧めします。

私は、Windows11の64bitなので、下図の黄色ハイライト部分のライセンスをダウンロードしました。

2.Ghostscriptをインストールします。ダウンロードしたインストーラーを実行し、Ghostscriptをインストールしてください。インストール先のパスをメモしておいてください。通常は「C:\Program Files\gs\gs」のようになります。

3.Windowsの環境変数にGhostscriptのパスを追加します。VBAからGhostscriptを呼び出すためには、Windowsの環境変数にGhostscriptのインストール先のパスを追加する必要があります。以下の手順で環境変数を設定してください。

4.スタートメニューから「コントロールパネル」を開き、「システムとセキュリティ」、「システム」をクリックします。

5.左側のメニューから「システムの詳細設定」をクリックし、「環境変数」ボタンをクリックします。

6.「システム環境変数」の「Path」を選択し、「編集」をクリックします。

7.「新規」をクリックして、Ghostscriptのインストール先のパスを追加します。例えば、「C:\Program Files\gs\gs\bin」を追加します。

8.設定を保存して、ウィンドウを閉じます。

9.VBAからGhostscriptを呼び出すコードを作成します。以下は、Ghostscriptを使用してPDFをJPGに変換するVBAコードの例です。

PDFをJPEGに変換する

gs10.00.0 : バージョンによって変更されます
gswin64c.exe : お使いのWindowsのBit (32bit or 64bit)によって選択します。

Sub ConvertPDFtoJPEG(ByVal pdfPath As String, ByVal jpegPath As String, ByVal dpi As Integer)
    Dim ghostscriptPath As String
    ghostscriptPath = "C:\Program Files\gs\gs10.00.0\bin\gswin64c.exe" 'Ghostscriptのインストールパスを設定

    'Ghostscriptコマンドを作成
    Dim gsCommand As String
    gsCommand = Chr(34) & ghostscriptPath & Chr(34) & " -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=jpeg -dJPEGQ=100 -r" & dpi & " -sOutputFile=" & Chr(34) & jpegPath & Chr(34) & " " & Chr(34) & pdfPath & Chr(34)

    'Ghostscriptを実行してPDFをJPEGに変換
    Dim returnValue As Long
    returnValue = Shell(gsCommand, vbHide)
    If returnValue <> 0 Then
        MsgBox "GhostscriptによるPDFからJPEGへの変換に失敗しました。エラーコード: " & returnValue
    End If
End Sub

このコードでは、ConvertPDFtoJPEGという名前のサブルーチンを定義しています。このサブルーチンは、変換元のPDFファイルのパス(pdfPath)、変換後のJPEGファイルのパス(jpegPath)、およびJPEG画像の解像度(dpi)を引数として受け取ります。

Ghostscriptのパスは、ghostscriptPath変数に設定します。この変数には、Ghostscriptの実行ファイル(gswin32c.exeまたはgswin64c.exe)のフルパスを指定します。

次に、Ghostscriptコマンドを作成します。このコマンドは、Ghostscriptをコマンドラインから実行し、PDFファイルをJPEGに変換します。Ghostscriptコマンドの各パラメーターについては、以下の通りです。

-q: クイエットモードで実行することを指定します。
-dQUIET: ログの出力を抑制することを指定します。
-dSAFER: 安全性を高めるために、Ghostscriptの実行環境を制限します。
-dBATCH: Ghostscriptがバッチモードで実行されることを指定します。
-dNOPAUSE: 一時停止することを防止します。
-dNOPROMPT: プロンプトの表示を抑制するオプション