Ciao Claudio,
Ciao Norman e anche Mauro
...... AAArrrrgh .....provate tutte e 3 .....non capisco ....
Ho Provato
Sheet("Pippo").Shapes.Range(Array("CommandButton3")).Select
Selection.Delete mi da' errore
**ActiveSheet.**Shapes.Range(Array("CommandButton3")).Select
Selection.Delete
mi da' errore
ActiveSheet.Shapes("CommandButton3").Delete .... mi da' errore
Sheet("Pippo").Shapes("CommandButton3").Delete .... mi da' errore
ActiveSheet.OLEObjects("CommandButton3").Delete (Oggetto mancante )
io ho aggiunto queste righe ; prima della sezione Copia e poi anche ..alla fine della sezione copia
(non insieme ..)
Se metto il nome del foglio mi dice oggetto mancante , ma anche se lascio ActiveSheet ......
C'aggio a FA' ? ....
A me, e a patto che la nuova istruzione sia immessa nel punto giusto del codice, qualunque dei suggerimenti offerti da Mauro e io andrebbero benissimo.
Nelle mie prove, ho inserito la nuova istruzione come l'ultima riga della macro, immediatamsnte prima di
End Sub.
Detto questo, vedo altri problemi con tuo codice e per migliorarlo, suggerirei la seguente versione leggermente modificata del tuo codice:
'=========>>
Option Explicit
'--------->>
Public Sub CopiaFoglio()
Dim WB As Workbook
Dim DDir As String, NewFname As String
Dim VBC As Object
Const FPrefix = "PrefissoSceltoDaClaudio" '<<=== Modifica
Set WB = ThisWorkbook
'\ Seleziona la cartella destinazione in DDir
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = DDir '\ Filtro per nome
.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
'\ Copia il foglio in un'altro al volo
'\ Converte tutte le formule del foglio nel
'\ valore al momento calcolato
With ActiveSheet
.Copy
With .UsedRange
.Value = .Value
End With
End With
'\ Salva il foglio
NewFname = DDir & FPrefix & ActiveSheet.Name & ".xlsx"
Application.DisplayAlerts = False
With ActiveWorkbook
.SaveAs Filename:=NewFname, FileFormat:=51
.Close
End With
With WB.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End If
Next VBC
End With
ActiveSheet.OLEObjects("CommandButton1").Delete
XIT:
Application.DisplayAlerts = True
End Sub
'<<=========
===
Regards,
Norman
