Ciao Simone,
grazie per la risposta. Però mi va in errore all'istruzione VBA.SetAttr per "Impossibile trovare il file".
Molto probabilmente perchè l'ha creato ma non ancora "rilasciato" (vedi immagine sotto).

Rimane così "appeso" finchè non salvo quello dopo. A quel punto scompare la versione Temp.
Non c'è un modo di cambiare la SaveAs in modo che rilasci subito quello creato e torni al nome originale che è "Statino.xlsm"? Perchè tra una SaveAs e l'altra anche l'originale prende il nome di quello appena creato.
Questo suggerirebbe che tu abbia implementato il mio codice in modo diverso ma, inoltre pare che la tua esigenza sia più ampia di quella indicata nella tua domanda originaria :-)
Se la tua esigenza sia di creare una copia del file, salvandolo come file xlsx in modo ReadOnly, chiuderlo e poi aver aperto il file xlsm, prova qualcosa del genere:
'=========>>
Option Explicit
'=========>>
Public Sub Tester()
Dim sFileName As String
Const Directory As String = "C:\Users\Ndj\Documents"
Const NomeFile As String = "Statino"
sFileName = Directory & NomeFile
On Error GoTo XIT
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=sFileName, _
FileFormat:=51, _
CreateBackup:=False
VBA.SetAttr sFileName & ".xlsx", vbReadOnly
ActiveWorkbook.SaveAs Filename:=sFileName, _
FileFormat:=52, _
CreateBackup:=False
VBA.SetAttr sFileName & "xlsm", vbNormal
XIT:
Application.DisplayAlerts = True
End Sub
'<<=========
Eseguendo questo codice, io vedo qualcosa del tipo:

Come si vede, un file Statino.xlsx è stato creato e il file Statino.xlsm è stato salvato ed è aperto.
Inoltre, il file xlsx è ReadIOnly:


===
Regards,
Norman
