Condividi tramite

Esecuzione di una routine in VBA che utilizza il copia e incolla.

Anonimo
2010-12-17T13:17:46+00:00

Esecuzione di una routine in VBA che utilizza il copia e incolla su un foglio di Excel 2007. La cartella degli appunti li accumula rallentandone l'esecuzione. Quale codice VBA posso inserire doco la copiatura per eliminarla dagli appunti.

Grazie a tutti.

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

8 risposte

Ordina per: Più utili
  1. Anonimo
    2010-12-17T13:50:07+00:00

    Esecuzione di una routine in VBA che utilizza il copia e incolla su un foglio di Excel 2007. La cartella degli appunti li accumula rallentandone l'esecuzione. Quale codice VBA posso inserire doco la copiatura per eliminarla dagli appunti.

    Grazie a tutti.

    Gli appunti di Windows e Office hanno gestioni del copia/incolla leggermente diversi. Inoltre, tu non hai postato *il codice*, quindi devo presumere...

    Public Sub m()

        Dim sh1 As Worksheet

        Dim sh2 As Worksheet

        With ThisWorkbook

            Set sh1 = .Worksheets("Foglio1")

            Set sh2 = .Worksheets("Foglio2")

        End With

        With sh1

            .Range("A1:A10").Copy

            sh2.Range("A1").PasteSpecial

            Application.CutCopyMode = False

        End With

        Set sh2 = Nothing

        Set sh1 = Nothing

    End Sub

    La parte centrale, può anche essere modificata così:

        With sh1

            .Range("A1:A10").Copy _

                Destination:=sh2.Range("A1")

        End With

    Nel primo caso hai a disposizione tutti i parametri relativi al metodo PastSpecial. Vedi anche nella guida di Excel:

    • Metodo Copy
    • Metodo PasteSpecial
    • Proprietà CutCopyMode

    Aggiungo anche un link ad una pagina che ti fa vedere come eliminare il contenuto degli appunti di Windows:http://www.maurogsc.eu/comefareperexcel/vuotareappunti.aspx

    Grazie per l'attenzione e fai sapere se hai risolto, grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2011-01-03T20:59:06+00:00

    Dalle prove fatte, se le ho fatte bene, la routine, come tutte le routine copia i dati negli appunti e poi li incolla sul foglio. Gli appunti contengono fino a 24 blocchi di dati, dal più vecchio al più recente, dal 25° più vecchio in poi vengono eliminati automaticamente. Nel mio caso ogni blocco di appunti contiene molte informazioni al punto che la Ram, se non sbaglio, viene caricata eccessivamente. Visivamente vedo che il prodesso parte velocemente e poi rallenta stabilizzandosi quando raggiunge i 24 blocchi negli appunti. Questi vengono cancellati con la chiusura dell'applicazione. Da ricerche fatte non mi sembra possibile, dopo ogni copia e incolla, cancellare il blocco di dati dagli appunti, comunque visto il suo scarso utilizzo, attendere qualche manciata di secondi o minuti in più non ne inficia l'uso.

    Grazie comunque per il tempo dedicatomi.

    Forse parliamo di cose diverse. Prova di seguire:

    Public Sub m()

        Dim sh As Worksheet

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            .Range("A" & 1).Copy

            .Range("B" & 1).PasteSpecial

            Application.CutCopyMode = False

            .Range("C" & 1).PasteSpecial

        End With

        Set sh = Nothing

    End Sub

    Il codice copia la cella A1, Incolla in B1, Cancello quanto ho negli Appunti, provo di incollare in C1 ed ottengo errore perchè non ho nulla negli Appunti. Se non ci credi, apri il blocco note e prova a Incollare: Incolla è disattivato perchè gli Appunti sono VUOTI. Commenta la riga Application.CutCopyMode = False. Come vedi gli Appunti sono pieni, ho Incollato anche in C1. E se provi ad Incollare nel blocco note, Incolla è attivo. Quindi, quello che scrivi non è corretto. Ti ho dimostrato che è possibile vuotare gli Appunti quando vuoi tu. Se volessi farlo ricorsivamente, ecco un semplice esempio:

    Public Sub m()

        Dim sh As Worksheet

        Dim lng As Long

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            For lng = 1 To 100

                .Range("A" & lng).Copy

                .Range("B" & lng).PasteSpecial

                Application.CutCopyMode = False

            Next

        End With

        Set sh = Nothing

    End Sub

    Dove avrò sempre e solo *un dato* in memoria. Banale adesso farlo per blocchi di celle:

    Public Sub m()

        Dim sh As Worksheet

        Dim lng As Long

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            For lng = 1 To 100

                .Range("A" & lng & ":G" & lng).Copy

                .Range("A" & lng + 101).PasteSpecial

                Application.CutCopyMode = False

            Next

        End With

        Set sh = Nothing

    End Sub


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    0 commenti Nessun commento
  3. Anonimo
    2011-01-03T17:03:13+00:00

    Dalle prove fatte, se le ho fatte bene, la routine, come tutte le routine copia i dati negli appunti e poi li incolla sul foglio. Gli appunti contengono fino a 24 blocchi di dati, dal più vecchio al più recente, dal 25° più vecchio in poi vengono eliminati automaticamente. Nel mio caso ogni blocco di appunti contiene molte informazioni al punto che la Ram, se non sbaglio, viene caricata eccessivamente. Visivamente vedo che il prodesso parte velocemente e poi rallenta stabilizzandosi quando raggiunge i 24 blocchi negli appunti. Questi vengono cancellati con la chiusura dell'applicazione. Da ricerche fatte non mi sembra possibile, dopo ogni copia e incolla, cancellare il blocco di dati dagli appunti, comunque visto il suo scarso utilizzo, attendere qualche manciata di secondi o minuti in più non ne inficia l'uso.

    Grazie comunque per il tempo dedicatomi.

    0 commenti Nessun commento
  4. Anonimo
    2011-01-02T18:15:52+00:00

    La cartella appunti si svuota quando si chiude l'applicazione. Essendo una macro utilizzata saltuariamente l'accetto come è. Grazie per aveci provato.

     

    Quindi? Cosa vuol dire: la cartella appunti si svuota quando si chiude l'applicazione? Non puoi spiegare *bene* cosa vuoi fare? Il ti ho postato un link che ha una routine che svuota subito gli appunti. Inoltre, cosa copi negli appunti? Diventa difficile aiutare se non vi spiegate bene. Grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    0 commenti Nessun commento
  5. Anonimo
    2011-01-02T16:01:23+00:00

    La cartella appunti si svuota quando si chiude l'applicazione. Essendo una macro utilizzata saltuariamente l'accetto come è. Grazie per aveci provato.

    0 commenti Nessun commento