Excel VBAの SaveAs
メソッドや ExportAsFixedFormat
メソッドを使うことで、ブックを 指定した形式(.xlsx、.xlsm、.pdfなど) で保存することが可能です。
目次
1. Excel形式を指定して保存(.xlsx / .xlsm)
.xlsx(マクロなし)で保存
Sub SaveAsXLSX()
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\Report.xlsx", _
FileFormat:=xlOpenXMLWorkbook 'xlsx
End Sub
解説:
ActiveWorkbook
… 現在アクティブなブックFilename
… 保存するパスとファイル名を指定FileFormat:=xlOpenXMLWorkbook
… Excel標準形式(.xlsx)として保存
.xlsm(マクロ有効)で保存
Sub SaveAsXLSM()
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\Report.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled 'xlsm
End Sub
解説:
FileFormat:=xlOpenXMLWorkbookMacroEnabled
を指定すると、マクロを保持したまま保存可能
2. PDFとして保存
Sub SaveAsPDF()
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Report.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
引数の詳細:
Type:=xlTypePDF
… PDF形式で保存Filename
… 保存先とファイル名(フルパス)を指定Quality:=xlQualityStandard
… 標準品質(xlQualityMinimum
を指定するとファイルサイズ優先の低品質)IncludeDocProperties:=True
… ドキュメントプロパティ(作成者やタイトル情報)を含めるIgnorePrintAreas:=False
… 印刷範囲を無視しない(True
にすると設定済みの印刷範囲を無視して全体を出力)OpenAfterPublish:=False
… 保存後にPDFを自動で開かない(True
で自動表示)
3. 上書き警告を非表示にして保存
Sub SaveAsNoAlert()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\Report.xlsx", _
FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
End Sub
解説:
Application.DisplayAlerts = False
… 上書き確認ダイアログを非表示にする。- 誤上書きを防ぐため、必要なときだけ有効にすることが望ましい。
4. 主なFileFormat定数一覧
定数 | 拡張子 | 内容 |
---|---|---|
xlOpenXMLWorkbook | .xlsx | マクロなしブック |
xlOpenXMLWorkbookMacroEnabled | .xlsm | マクロ有効ブック |
xlExcel8 | .xls | Excel97-2003形式 |
5. まとめ
SaveAs
のFileFormat
引数で形式を指定可能(.xlsx / .xlsm)- PDF保存は
ExportAsFixedFormat
を使用し、引数で品質や出力範囲を制御可能 DisplayAlerts
の制御で上書き確認を自動化可能
コメント