【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 Function
Always 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】ドラッグアンドドロップできるユーザーフォーム|ListView -
ユーザーフォームを半透明にする 【VBA】ユーザーフォームを半透明にしてシートの内容が見えるようにする|waiting-form -
[VBA]Make Directory MkDir 【VBA】フォルダを作る|MkDir(フォルダがすでに存在していればエラーになる) -
[VBA]Trimwhitespace 【VBA】先頭,末尾,両端の空白を削除する|Trim -
Excelテーブル最終行に値を追加 【VBA】Excelのテーブルの最終行に値を追加する -
CurrentRegionのデータを配列で取得 【VBA】シートにあるデータを配列に格納する(空白含まない)|CurrentRegion