Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Claudio,
Reinterpretando la tua richiesta, sostituisci il mio codice precedente con la seguente versione:
'=========>>
Option Explicit
'--------->>
Public Sub CopiaFoglio()
Dim DDir As String
Dim FPrefix As String
Dim NewFName As String
Dim vName As Variant
Dim VBC As VBComponent
'\ Seleziona la cartella destinazione in DDir
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = vbNullString
.Title = "Scegli la directory per il foglio " & ActiveSheet.Name
.Show
If .SelectedItems.Count = 0 Then 'directory non scelta
MsgBox ("Scelta non effettuata, procedura abortita")
Exit Sub
End If
DDir = .SelectedItems(1) & ""
End With
vName = Application.InputBox(Prompt:="Inserisci un nome per il nuovo file", _
Default:=ActiveSheet.Name, _
Title:="NUOVO NOME")
'\ Richiedi il nome del nuovo file che verrà creato
If vName = False Then
Call MsgBox(Prompt:="Hai cancellato. Riprova!", _
Buttons:=vbCritical, _
Title:="MACRO TERMINATO!")
Exit Sub
End If
'\ Crea un nuovo workbook (con un solo foglio) dal foglio attivo
ActiveSheet.Copy
'\ Converte tutte le formule del foglio del nuovo workbook
'\ alle sue valore
With ActiveSheet.UsedRange
.Value = .Value
End With
'\ Salva il nuovo workbook
NewFName = DDir & FPrefix & vName & ".xlsx"
With ActiveWorkbook
.SaveAs FileFormat:=51, Filename:=NewFName
.Close SaveChanges:=False
End With
'\Cancella il codice di evento dal file originale
With ThisWorkbook.VBProject
For Each VBC In .VBComponents
With VBC
If .Type = 100 Then
With .CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End If
End With
Next VBC
End With
End Sub
'<<=========
===
Regards,
Norman