unote 書けば書くほどに

VBA 同名シート確認

Sub CopySheet()
Dim srcWorkbook As Workbook
Dim dstWorkbook As Workbook
Dim srcSheet As Worksheet
Dim dstSheet As Worksheet

' エラーハンドリング
On Error GoTo ErrorHandler

' A.xlsmを開く
Set srcWorkbook = Workbooks.Open("C:\Path\to\A.xlsm")

' B.xlsxのbシートをコピーする
Set dstWorkbook = ThisWorkbook ' 現在のブック(A.xlsm)を対象にする
Set srcSheet = srcWorkbook.Sheets("b")

' コピーする前に同名のシートが存在するかチェックする
On Error Resume Next
Set dstSheet = dstWorkbook.Sheets(srcSheet.Name)
On Error GoTo ErrorHandler

If Not dstSheet Is Nothing Then
' 同名のシートが既に存在する場合はメッセージを表示
MsgBox "同名のシートが既に存在します。"
Else
' シートをコピーする
srcSheet.Copy After:=dstWorkbook.Sheets(dstWorkbook.Sheets.Count)
MsgBox "シートをコピーしました。"
End If

' ワークブックを閉じる
srcWorkbook.Close SaveChanges:=False

Exit Sub

ErrorHandler:
MsgBox "エラーが発生しました。"
End Sub