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-16T09:47:52+00:00

    Ciao Claudio,

    Grazie ora scarico il file modificato e faccio le prove ,comunque mi sono accorto che nel codice del file di esempio,manca la parte Paste Special .... e quindi copia tutte le formule .... comunque ho aggiunto io quella parte ...

    Non credo sia vero: la mia modifica del tuo codice esplicitamente copia solo i valori; le formule NON vengono copiate!

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=bb140345-e848-4b91-850d-8b1a8281dbb0)

    Credo che la mia modifica sia preferibile e più efficiente, ma tu potresti anche scegliere di non usarla.

    Ripeterei che, a me, il codice funziona, senza alcun problema, nel modo in cui ho capito ls tua esigenza:

    • Il foglio di interesse viene salvato come un nuovo file del tipo xlsx, senza codice e senza il controllo CommandButton;
    • Il controllo CommandButton viene eliminato dal foglio originale e il codice nel modulo del foglio viene cancellato.

    ===

    Regards,

    Norman

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=f548d52a-97b9-4309-90dd-332ef6b30a1f)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-06-16T09:11:49+00:00

    Buon Giorno Norman

    Grazie ora scarico il file modificato e faccio le prove ,comunque mi sono accorto che nel codice del file di esempio,manca la parte Paste Special .... e quindi copia tutte le formule .... comunque ho aggiunto io quella parte ...

    un'altra cosa di cui mi sono accorto e' che .... quando salvo il foglio con il vecchio codice .. e anche con il nuovo ..

    non  posso Nominare il  Nuovo File  in maniera diversa da quella proposta da FileDialog ... 

    Io  ho la necessita' di nominare il File ogni volta in maniera diversa ... Esempio  Proposta Pippo  viaggio a Parigi Pratica 1000 ....  oppure  Proposta Pluto viaggio Londra Pratica 1001 ......

    penso che le righe di codice sulle quali devo apportare delle modifiche  ...siano

    Const FPrefix ="Proposta"     e poi nella sezione  Salva il Foglio

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

    pero' non conosco l'istruzione da mettere per poter aggiungere a  "Proposta"& ...... testo variabile ......

    Sto gia' lavorando ad una alternativa se non si riuscisse a ovviare al problema del Pulsante copiato con i collegamenti ...

    Ho aggiunto un foglio che ho chiamato "Archivia Proposte" dove mettero' tutti i pulsanti necessari per far partire le Macro

    GRAZIE  per la tua infinita pazienza   CIAO    Claudio P

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-06-16T08:51:07+00:00

    Ciao Claudio,

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

    Colpa mia! Nel modulo di codice del foglio Claudio, incolla:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub CommandButton1_Click()

            Call CopiaFoglio

    End Sub

    '<<=========

    Questo codice era nel file ma, provando la routine CopiaFoglio, il vodice di evento viene cancellato e, prima di caricare il file, ho trascurato la necessità di ripristinarlo! Ho aggiornato il file de esempio.

    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   co

    Vedi la mia risposta di pochi minuti fa.

    ===

    Regards,

    Norman

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=f592ef1f-0ffc-44e4-8b98-f2aebc409397)

    La risposta è stata utile?

    0 commenti Nessun commento