ExcelVBAでPDFエクスポート方法|【ファイル名が重複しない方法も解説】

ExcelVBA

今回はExcelVBAでPDF出力する方法を解説します。

簡単に自己紹介ですが私は会社員15年程経験しその中でExcelVBAを使い沢山の効率化を図ってきました。Excelの資格も取得していますので有益な情報になると思います。

今回の記事の対象者
  • ExcelVBAでPDF出力する方法を知りたい
今回の記事を見た事で得られる事
  • ExcelVBAでPDF出力する方法がわかる

では早速ですが解説します。

Sub PDF()
     ' フォルダーパスを作成
     Dim folderPath As String
     folderPath = ThisWorkbook.Path & "\テスト\" & "\テスト2\"
     
     ' フォルダーが存在しない場合は作成
     If Dir(folderPath, vbDirectory) = "" Then
         MkDir folderPath
     End If
 
     ' ファイル名を作成
     Dim fileName As String
     fileName = "あいうえお" & Format(Now(), "mm_dd_hh_mm_ss") & ".pdf"
     
     ' PDFを作成するシートを選択
     Sheets("Sheet1").Select
     
 
     
     ' ファイルをPDFで保存
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
         fileName:=folderPath & fileName, Quality:=xlQualityStandard, _
         IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
     
     ' 元のシートを選択
     Sheets("Sheet1").Select
 End Sub

手順としては

  1. フォルダーのパスを作成し変数folderPathに代入する
  2. もし指定したフォルダー名が存在しない場合にはフォルダーを作成する
  3. ファイル名を作成し変数fileNameに代入する
  4. PDFを作成するシートを選択する
  5. ファイルをPDFでエクスポートする

という手順です。

ここで2つポイントがあります

1つ目のポイント

手順1のThisWorkbook.Pathの部分です。フォルダー名をフルパスで記述してしまうとフォルダーの場所を少しでも変更してしまうとエラーになるのでThisWorkbook.Pathと記述する事で相対パスになるのでエラーを回避出来ます。かなり便利な記述になります。

2つ目のポイント

手順3の部分ですが、「あいうえお」というファイル名を指定していますがその後ろにFormat(Now(), “mm_dd_hh_mm_ss”)を記述しています。これはPDF出力した現在時刻の時間を3月21日10時30分41秒を右記のように03_21_10_30_41という秒単位で出力する事で重複させないファイル名が作成出来ます。

これで任意の場所にPDF出力出来ると思います。

今回はVBAでPDF出力する方法をお伝えしました。

良いVBAライフを・・・

タイトルとURLをコピーしました