Excel VBAでシートをPDFとして出力する際に、ExportAsFixedFormatメソッドでエラーが発生することがあります。特にファイル名の作成やパスの指定が正しくない場合に起こりやすいです。本記事では、よくあるエラー原因と修正例を紹介します。
ExportAsFixedFormatの基本構文
ActiveSheet.ExportAsFixedFormat メソッドは、Type、Filenameなどの引数を正しく指定する必要があります。
基本構文は以下の通りです:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”フルパスとファイル名”
ファイル名とパスの指定方法
エラーが起きる主な原因は、Filenameに渡す文字列が正しく構築されていないことです。特に日本語やスペース、特殊文字に注意が必要です。
安全な書き方の例として、WScript.Shellを使ってデスクトップパスを取得し、文字列を結合する方法があります。
Dim text As String
Dim desktopPath As String
desktopPath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”)
text = “勤怠一覧表(” & Range(“I2”).Value & “月).pdf”
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=desktopPath & “\” & text
複数範囲のクリア
Range(“A5:D16″,”Q5:R16”).ClearContents の部分も注意が必要です。複数の非連続範囲をクリアする場合は、Union関数を使うと安全です。
例:
Union(Range(“A5:D16”), Range(“Q5:R16”)).ClearContents
よくある修正ポイント
1. RangeのValueを明示的に取得する
2. ファイル名に使用できない文字を除外
3. 非連続範囲はUnionでまとめる
これらのポイントを押さえることで、ExportAsFixedFormatのエラーは大半が解消できます。
まとめ
Excel VBAでPDFを出力する際は、ファイル名とパスの正しい構築、非連続範囲の扱いに注意することが重要です。Union関数の活用や文字列操作を工夫することで、スムーズにPDF出力と範囲クリアが実行可能です。


コメント