_基本ExcelVBA

既に開いているブックと同じ名前は付けられない【ExcelVBA】

同じ名前のブックは開けない

Excelは同じ名前(拡張子まで一致している)のブックを同時に開くことができません。
そのため新規ブックを保存する際、同名のブックを開いている限りエラーが発生します。
※保存先は関係なく、名前だけで判断されてしまいます。

同名のブックが開かれていると保存に失敗することは、以下のコードで確認できます。

Public Sub Sample()
    '既存のブックを開いておく
    Workbooks.Open "C:\excelsample\test.xlsx"
    
    Dim wb As Workbook
    Set wb = Workbooks.Add      '新規ブックを作成する
    
    On Error Resume Next        'エラー処理を開始する
    wb.SaveAs "test.xlsx"       '新しく開いたブックに既存のブックと同じ名前をつける
    If Err.Number <> 0 Then     'エラーが発生したかの確認
        'エラーが発生していた場合、メッセージを表示する
        Debug.Print "同名のブックが開かれているため、保存に失敗しました"
    End If
End Sub

 

同名のブックが開かれていないか確認できるサンプルコード

Public Sub Sample2()
    Dim name As String, wb As Workbook
    Const Target As String = "C:\ファイル名"
    
    '■同名のブックが開かれているかチェック
    name = Dir(Target)
    '同名のブックが開かれているときの処理
    For Each wb In Workbooks
        If wb.name = name Then
            Debug.Print "同名のブックが開かれています"
            Exit Sub
        End If
    Next wb
    
    '同名のブックを開いていなければ開く
    Workbooks.Open Target
End Sub

 

注意点

  • ファイル名(拡張子を含む)は変更してください。

関連記事

コメント

タイトルとURLをコピーしました