【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]Reset filtersand outlines 【VBA】オートフィルタ解除&非表示を表示する|.FilterMode/.Outline
- 
          
            
      
       [VBA]Horizontal Paste1D array 【VBA】一次元配列を横方向にシートに貼り付け【範囲をリサイズする】
- 
          
            
      
       Excelテーブル最終行に値を追加 【VBA】Excelのテーブルの最終行に値を追加する
- 
          
            
      
       [VBA]ShowMessage Box 【VBA】メッセージボックスをモジュールに集める|OKOnly,OKCancel,YesNo
- 
          
            
      
       [VBA]Convert stringto Date 【VBA】文字列を日付型に変える|CDateよりDateSerial
- 
          
            
      
       VBAでテーブル設定 【VBA】Excelにテーブルを設定する