指定されたファイル名でワークブックを保存

タイトルのマクロは、以下です。

'**************************************************
'* ファイルの存在を確認して新規ブックを作成
'* fileName:ファイル名
Private Sub SaveWorkbook(ByVal fileName As String)
    Dim wb As Workbook
    
    'あらかじめ同名のブックがあるか確認する
    If Len(Dir(ThisWorkbook.Path & "\" & fileName)) <> 0 Then
        If MsgBox("同名のブックがすでに存在します。上書き保存しますか?" _
            , vbYesNo + vbExclamation) = vbNo Then
            '上書き保存しない場合は処理を終了する
            Exit Sub
        End If
    End If
    
    'ワークブックを新規に追加する
    Set wb = Workbooks.Add
    
    '上書き保存のメッセージを非表示にする
    Application.DisplayAlerts = False
    '名前を付けて保存する
    wb.SaveAs ThisWorkbook.Path & "\" & fileName
    Application.DisplayAlerts = True
    
    '保存したブックを閉じる
    wb.Close
    
End Sub

このコードは、指定されたファイル名で新しいExcelブックを保存するためのサブルーチンです。もし同名のブックがすでに存在する場合には、上書き保存するかどうかの確認メッセージが表示されます。以下に各部分の詳細な説明を示します。

コード全体の説明

Private Sub SaveWorkbook(ByVal fileName As String)

  • 概要: SaveWorkbookという名前のプライベートサブルーチンの開始を示します。このサブルーチンはfileNameという文字列引数を受け取ります。

Dim wb As Workbook

  • 概要: wbという名前のWorkbookオブジェクト変数を宣言します。

If Len(Dir(ThisWorkbook.Path & "\" & fileName)) <> 0 Then

  • 概要: ThisWorkbook.Path(現在のブックが保存されているパス)とfileNameを結合してファイルパスを作成し、そのファイルが存在するかどうかを確認します。
    • Dir関数は指定されたパスのファイルが存在する場合、そのファイル名を返します。存在しない場合は空の文字列を返します。
    • Len関数は文字列の長さを返します。長さが0でない場合、つまりファイルが存在する場合に条件が成立します。

If MsgBox("同名のブックがすでに存在します。上書き保存しますか?", vbYesNo + vbExclamation) = vbNo Then

  • 概要: 同名のブックが存在する場合、メッセージボックスを表示して上書き保存するかどうかをユーザーに確認します。
    • vbYesNo + vbExclamationはメッセージボックスに「はい」と「いいえ」のボタンと警告アイコンを表示します。
    • ユーザーが「いいえ」を選択した場合、条件が成立し、次の行が実行されます。

Exit Sub

  • 概要: サブルーチンの処理を終了します。上書き保存しない場合、ここで処理が終了します。

Set wb = Workbooks.Add

  • 概要: 新しいワークブックを作成し、wbオブジェクト変数に設定します。

Application.DisplayAlerts = False

  • 概要: アプリケーションの警告メッセージを非表示に設定します。これにより、次の行で行われる上書き保存の確認メッセージが表示されません。

wb.SaveAs ThisWorkbook.Path & "\" & fileName

  • 概要: 新しいワークブックを指定されたファイル名で保存します。

Application.DisplayAlerts = True

  • 概要: アプリケーションの警告メッセージを再度表示するように設定します。

wb.Close

  • 概要: 保存したワークブックを閉じます。

End Sub

  • 概要: SaveWorkbookサブルーチンの終了を示します。

処理の流れ

  1. ファイル名を引数としてサブルーチンを呼び出します。
  2. 指定されたファイル名で同名のブックが存在するかどうかを確認します。
  3. 同名のブックが存在する場合、上書き保存するかどうかの確認メッセージを表示します。
  4. ユーザーが「いいえ」を選択した場合、サブルーチンの処理を終了します。
  5. ユーザーが「はい」を選択した場合、または同名のブックが存在しない場合、新しいワークブックを作成します。
  6. 警告メッセージを非表示に設定し、新しいワークブックを指定されたファイル名で保存します。
  7. 警告メッセージを再度表示するように設定し、ワークブックを閉じます。

使用例

以下の例では、SaveWorkbookサブルーチンを呼び出して、”NewWorkbook.xlsx”という名前で新しいブックを保存します。

Sub ExampleUsage()
    ' "NewWorkbook.xlsx"という名前で新しいブックを保存します
    Call SaveWorkbook("NewWorkbook.xlsx")
End Sub

Follow me!