VB Copia Foglio Excel senza Formule .... senza Copiare Pulsante Macro

Anonimo
2016-06-15T08:16:12+00:00

Buon Giorno a tutti

sono nuovamente a chiedere aiuto ....

utilizzo un codice VB  creato dal Grande Norman Jones ...che nuovamente ringrazio , ...per copiare un singolo Foglio di excel da una cartella , in un altro Unico ,senza riportare ;Formule e collegamenti .................. Funziona perfettamente !!!  pero' Copia  Anche il Pulsante che fa' partire l'evento ...con il suo collegamento alla Macro , .... per cui una volta salvato il nuovo Foglio , bisogna Tagliare il Pulsante per interrompere i collegamenti ......

Esiste un modo per evitare questo evento ???

Una soluzione palliativa l'ho gia' individuata , Posizionare il Pulsante in Altro Foglio della Cartella di lavoro ...sostituendo nel codice 

With Activesheet  ..... il nome del Foglio interessato .... pero'  questo rende complicate le operazioni .. i fogli dove dovrei inserire i pulsanti sono 14 ... e vorrei evitare di dover passare continuamente da un foglio all'altro e inserire 14 macro (una per ogni pulsante ...)

il  codice e' il seguente

Dim VBC As Object

Dim p As String

Sub CopiaFoglio()

    ' 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

    ActiveSheet.Copy

    Cells.Select

    Selection.Copy

    Cells.Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Application.CutCopyMode = False

    Range("A1").Select

    ' Salva il foglio

    NewFName = DDir & FPrefix & ActiveSheet.Name & ".xlsx"

    ActiveWorkbook.SaveAs Filename:=NewFName

    ActiveWorkbook.Close

    With ActiveWorkbook.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

End Sub

               Grazie       Claudio P

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-06-15T08:50:31+00:00

Ciao Claudio, Ciao Mauro,

**ActiveSheet.**Shapes.Range(Array("CommandButton1")).Select

Selection.Delete

Senza la selezione e più brevemente, forse:

 ActiveSheet.Shapes("CommandButton1").Delete

oppure

ActiveSheet.OLEObjects("CommandButton1").Delete

===

Regards,

Norman

![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=f5cf0fd8-e2e7-47d5-86b2-27f0848297f8)

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-06-15T08:24:39+00:00

**ActiveSheet.**Shapes.Range(Array("CommandButton1")).Select

Selection.Delete

Dove le parti in grassetto vanno modificate con il nome del tuo foglio e del tuo CommandButton.

La risposta è stata utile?

0 commenti Nessun commento

33 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-06-15T18:29:20+00:00

    Ciao Claudio,

    Adesso pero' ho un nuovo problema .... 

    Ho copiato ed incollato il tuo nuovo codice in un Modulo  std (prima ho cancellato il vecchio codice e rimosso il Modulo precedente ) , sono andato nel foglio interessato , ho inserito  un pulsante (Pulsante 5) , gli ho assegnato la Macro  CopiaFoglio , sono rientrato nel codice , ho modificato  ActiveSheet.OLEObjects("CommandButton1").Delete  con il nuovo numero  del CmB .... ActiveSheet.OLEObjects("CommandButton5").Delete .....

    Ho lanciato la Macro ... Errore di Run Time    Impossibile trovare la proprieta' OLEObjects per la classe Worksheet

    ?????  cosa devo fare ??????    spero che tu abbia ancora un po' di pazienza 

    Prova a scaricare il mio file di prova Claudio20160615.xlsm  e vedi se riscontri gli stessi problemi:

    https://www.dropbox.com/s/i0ywtcwps3xcdzj/Claudio20160615.xlsm?dl=0

    Nota, comunque, che se dovessi tentare di aviare il tuo codice più di una volta, riscontreresti quel problema in quanto il controllo esecuzione del codice.

    Se tu dovessi ancora aver un problema, carica il tuo  file, anche con un solo foglio e pochissimi  dati e posta un link al file in una risposta qui.

    ===

    Regards,

    Norman

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=6631444c-a641-4e4f-9d7e-06b9326fa686)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-06-15T18:04:19+00:00

    Ciao  Norman

    nuovi progetti ....ancora non riesco a finire questo ....comunque ho talmente tanto da imparare che consultero' per molto tempo la community ...

    Adesso pero' ho un nuovo problema ....

    Ho copiato ed incollato il tuo nuovo codice in un Modulo  std (prima ho cancellato il vecchio codice e rimosso il Modulo precedente ) , sono andato nel foglio interessato , ho inserito  un pulsante (Pulsante 5) , gli ho assegnato la Macro  CopiaFoglio , sono rientrato nel codice , ho modificato  ActiveSheet.OLEObjects("CommandButton1").Delete  con il nuovo numero  del CmB .... ActiveSheet.OLEObjects("CommandButton5").Delete .....

    Ho lanciato la Macro ... Errore di Run Time    Impossibile trovare la proprieta' OLEObjects per la classe Worksheet

    ?????  cosa devo fare ??????    spero che tu abbia ancora un po' di pazienza da spendere per aiutarmi .....

    Grazie  Grazie                   Claudio P

    Comunque ho rifatto le prove con il vecchio codice posizionando il frammento di codice per non copiare il pulsante proprio prima di End Sub ......   sempre errore ....

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-06-15T17:03:38+00:00

    Ciao Claudio,

    Poi  Sostituiro'  il codice con il tuo ultimo ...  Prefix  ....??? per me' e' un termine nuovo ...suppongo che sia il Nome Fisso da dare al nuovo  Foglio .... io metto "Pippo" ....vedo cosa succede e poi sostituisco con piu' congruo  ..

    Prefix (inglese) = Prefisso (italiano).

    Nel tuo codice, non avesti assegnato un valore alla costante FPrefix e, quindi, per avvertirti del fatto, assegnai l'espressione "PrefissoSceltoDaClaudio". Il valore assegnato alla costante FPrefix costituirà la prima parte del nome del nuovo file. Se nessun valore viene assegnato, come nel caso del codice originale, o se la costante fosse eliminata dal codice, il nuovo nome del file sarà quello del foglio di interesse.

    con questa ultima parte il Progetto Pratiche e' Finito  grazie  a  te e alla community

    Allora, devi cominciare un altro progetto subito - non vogliamo perdere amici! 

    Alla prosima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento