Me parece que te enredas por utilizar HOJA en lugar del nombre.
En el video Nº 11 de mi canal (Mejoras en el código) comento este detalle a partir del minuto 3, con la solución recomendada.
Por ahora, así quedó en tu libro:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Esto se ejecutará justo unos instantes antes de guardar el fichero y cerrar, para
'que al volver abrir, se abra con los nombres propios
If Hoja1.Name <> "Tabla1" Then Hoja1.Name = "Tabla1"
If Hoja2.Name <> "Tabla2" Then Hoja2.Name = "Tabla2"
If Hoja3.Name <> "Tabla3" Then Hoja3.Name = "Tabla3"
If Hoja4.Name <> "Suplente" Then Hoja4.Name = "Suplente"
'xxxxxxxxxx
Dim wSheet As Worksheet
'agregar todas las hojas en la matriz
hojas = Array("Tabla1", "Tabla2", "Tabla3") 'completar con las que falten
For y = LBound(hojas) To UBound(hojas)
nbreCopia = "Copia_" & hojas(y) & "x" 'actualmente tus hojas tienen la x. (*)
'control de posible hoja inexistente
For Each sh In Sheets
If sh.Name = nbreCopia Then
'Si existe la hoja Copia se la elimina previa confirmación
sino = MsgBox("La hoja " & nbreCopia & " existe. ¿Deseas eliminarla?", vbQuestion + vbYesNo, "Confirmar")
'si se acepta se elimina
If sino = vbYes Then
Application.DisplayAlerts = False 'deshabilita el mensaje de alerta al eliminar
Sheets(nbreCopia).Delete
Application.DisplayAlerts = True 'habilita nuevamente los mensajes de alerta
End If
Exit For
End If
Next sh
Next y
End Sub
(*) Actualmente tus copias tienen una x al final, por eso le agregué esa letra en la cadena.
nbreCopia = "Copia_" & hojas(y) & "x" 'actualmente tus hojas tienen la x. (*)
Si no vas a colocar ningún agregado, dejala así:
nbreCopia = "Copia_" & hojas(y)