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-16T08:40:00+00:00

    Ciao Claudio,

    Purtroppo da' problemi ... Errore di compilazione Tipo definito dall'utente non definito

    Il tuo problema è dovuto al fatto che io avevo dichiarato la variable VBC come VBComponent anzichè  Object. Tuttavia, ciò richiede che si faccia riferimento alla library Microsoft Visual Basic for Applications Extensibilty. 

    Quando io programmo con gli oggetti VBA, creo sempre un riferimento a questa library. Pertanto, è necessario creare un riferimento o ripristinare la dichiarazione della variabile oggetto VBA come Object.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-06-16T07:14:42+00:00

    Buon Giorno   Norman

    ho dimenticato di dirti che ho scaricato il tuo File di esempio , l'ho fatto girare e ..nella versione originale ,con il CommandButton1 , se cliccato , non esegue nessuna azione , ho provato a modificare nel codice  da CommandButton1  a Pulsante1  e da' errore ....proprieta'   OLEObjects ....

    Ho copiato il codice del Tuo File di esempio (quello che ho scaricato..) nel Modulo del mio File ,gli ho assegnato nuovo Pulsante associato alla macro ..... Errore  di compilazione tipo definito dall'utente non definito ..

    evidenziato in giallo       Public Sub CopiaFoglio()

    evidenziato in blu      Dim     VBC As VBC   component

                           Ciao   Grazie  e buona giornata                  Claudio P

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-06-15T22:00:42+00:00

    Ciao  Norman

    Purtroppo da' problemi ... Errore di compilazione Tipo definito dall'utente non definito

    Ho caricato il file al link qui sotto ,ho lasciato solo i fogli indispensabili per vedere i dati

    il foglio dove eseguire la macro e' il foglio  "Proposta 1 Loc 2H"  dentro c'e' il Pulsante1   associato a CopiaFoglio

    Il Modulo dove c'e' il codice e' il Modulo5

    .... il Foglio "Proposta 1 Loc 1H" , l'ho lasciato perche' dopo aver eseguito la Macro ....si sono cancellate tutte le formule..

    Sembra ...essersi copiato su se' stesso ....???

    Grazie e Buona notte       Claudio P

    https://www.dropbox.com/s/qxuq123evajuhyq/Pratiche%20%202016%20%20Prova%20x%20Controlli%205.xlsm?dl=0

    La risposta è stata utile?

    0 commenti Nessun commento