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