【VBA】名前を付けて保存|SaveAs
作成日:2022-12-02
更新日:2025-10-04

名前を付けて保存する
メッセージが出ないように、アラート停止→再開する
' Save a Workbook under a new path and return that Workbook safely
' Workbookを新しいパスに保存し、安全にそのWorkbookを返す
Public Function SaveAsBook( _
ByVal wb As Workbook, _
ByVal fullPath As String) As Workbook
On Error GoTo CleanUp
Application.DisplayAlerts = False
wb.SaveAs Filename:=fullPath
Set SaveAsBook = wb ' ActiveWorkbookではなく、直接渡されたwbを返す
CleanUp:
Application.DisplayAlerts = True
End FunctionAlways return the Workbook you saved, not the active one—stability beats convenience.
返すのは常に保存したWorkbook自身、ActiveWorkbookに頼らない
DisplayAlerts のリスク
- False にしたままエラーで抜けると Excel 全体が無音で危険。
- 必ず
Finally的に True に戻す仕組みが必要。
Referenced Insights
- Microsoft Docs: Workbook.SaveAs method (Excel)
- Fowler, M. (2004). Refactoring: Improving the Design of Existing Code. Addison-Wesley.(外部依存を避け、引数をそのまま返すことが推奨される)
| SaveAs|別名保存 |
| ActiveWorkbook|アクティブブック |
| DisplayAlerts|警告表示制御 |
| Error Handling|エラーハンドリング |
| Robust Return|堅牢な戻り値 |
2022-12-02
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[VBA]Cutbefore after 【VBA】文字列から指定文字より前/後ろをカットする|InStrRev/Left$/Mid$ -

Excel内でSQLを使いたい 【VBA】Excelシート内の表データをSQLで操作したい -

絶対値を取得 【VBA】絶対値を取得する|Abs -

[VBA]close booksave or not 【VBA】ブックを閉じる3つの方法|保存して/保存しないで/ブック名で/ -

[VBA]Auto DiffHTML Output 【VBA】WinMergeでファイルを自動比較&HTMLレポート出力|AIより手軽 -

[VBA]Vertical Paste1D array 【VBA】一次元配列を縦方向にシートに貼り付け【範囲をリサイズする】