Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vba: copy/paste non negli appunti

652 views
Skip to first unread message

Antonello

unread,
Feb 11, 2010, 9:35:03 AM2/11/10
to
Ciao , spero di essere nel ng giusto.
Ho una serie di macro in excel che copiano di continuo delle celle in
altre celle di altri fogli, in pratica una serie di istruzioni copy/paste;
siccome queste istruzioni si ripetono ogni quarto d'ora succede che dopo
qualche giorno il pc mi si blocca per riempimento del file di paging di
windows
Ho capito che questo succede perch� l'operazione di copy scrive
continuamente nuovi dati negli appunti, senza cancellare i dati vecchi,
quindi vedo il file di paging che aumenta continuamente; uscendo da excel
i dati vengono cancellati e il file si ripristina, ma a me servirebbe che
il sistema funzionasse a tempo indeterminato.
Dovrei dunque scrivere i dati dell'istruzione copy in un'area locale, che
possa essere sovrascritta dalla successiva istruzione copy; ho capito che
c'entra il parametro [destination] dell'istruzione copy, ma non so come
utilizzarlo
Spero di essere stato chiaro
Grazie
Antonello

--


questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it


Wodka40[Google]

unread,
Feb 11, 2010, 9:53:06 AM2/11/10
to
On 11 Feb, 15:35, pi...@dd.ss (Antonello) wrote:
> Ciao , spero di essere nel ng giusto.
> Ho una serie di macro in excel che copiano di continuo delle celle in
> altre celle di altri fogli, in pratica una serie di istruzioni copy/paste;
> siccome queste istruzioni si ripetono ogni quarto d'ora succede che dopo
> qualche giorno il pc mi si blocca per riempimento del file di paging di
...
abbi pazienza eh....forse mi sfugge qualcosa di quanto hai detto (o
non hai detto tutto)

Il copia ed incolla serve per passare dati tra applicazioni diverse.
es. faccio il grafico in excel e lo incollo nella relazione in world!

Excel se si tratta di passare dati tra fogli della solita cartella di
lavoro ti mette a disposizione i nomi per fare riferimento agevolmente
a celle o zone di fogli diversi (sempre della solita cartella ovvio)

Quindi ...io capisco che vuoi copiare dati fra fogli di excel di
cartelle di lavoro excel diverse.

1 soluzione kafkiana....una cartella di lavoro che ingloba i due fogli
di excel? Forse è troppo facile da pensare?Excel gestisce bene le 3
dimensioni!

2 soluzione....export su file...ogni 15 minuti check del file


ma a prescindere....mi incuriosisce.....che cavolo di complicazione è?
Una gestione contratti/ordini on line? Una elaborazione statistica di
centraline rilevamento fumi o inquinamento?....son curioso!

Rafunk

unread,
Feb 11, 2010, 9:54:42 AM2/11/10
to

"Antonello" <pi...@dd.ss> ha scritto nel messaggio
news:hl14in$n6b$1...@news.newsland.it...

> Ciao , spero di essere nel ng giusto.
> Ho una serie di macro in excel che copiano di continuo delle celle in
> altre celle di altri fogli, in pratica una serie di istruzioni copy/paste;
> siccome queste istruzioni si ripetono ogni quarto d'ora succede che dopo
> qualche giorno il pc mi si blocca per riempimento del file di paging di
> windows
> Ho capito che questo succede perch� l'operazione di copy scrive
> continuamente nuovi dati negli appunti, senza cancellare i dati vecchi,
> quindi vedo il file di paging che aumenta continuamente; uscendo da excel
> i dati vengono cancellati e il file si ripristina, ma a me servirebbe che
> il sistema funzionasse a tempo indeterminato.
> Dovrei dunque scrivere i dati dell'istruzione copy in un'area locale, che
> possa essere sovrascritta dalla successiva istruzione copy; ho capito che
> c'entra il parametro [destination] dell'istruzione copy, ma non so come
> utilizzarlo
> Spero di essere stato chiaro
> Grazie
> Antonello

Prova a leggere qua:

http://www.cpearson.com/Excel/Clipboard.aspx

In particolare:
Within Excel, you can clear Excel data from the clipboard with:
Application.CutCopyMode = False. Or to completely clear the clipboard, use
code like the following.

Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As
Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long

Sub ClearClipboard()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub

Bye

Raf

Antonello

unread,
Feb 12, 2010, 5:13:18 AM2/12/10
to
Wodka40[Google] ha scritto:

> On 11 Feb, 15:35, pi...@dd.ss (Antonello) wrote:
> > Ciao , spero di essere nel ng giusto.
> > Ho una serie di macro in excel che copiano di continuo delle celle in
> > altre celle di altri fogli, in pratica una serie di istruzioni copy/paste;
> > siccome queste istruzioni si ripetono ogni quarto d'ora succede che dopo
> > qualche giorno il pc mi si blocca per riempimento del file di paging di
> ...
> abbi pazienza eh....forse mi sfugge qualcosa di quanto hai detto (o
> non hai detto tutto)

> Il copia ed incolla serve per passare dati tra applicazioni diverse.
> es. faccio il grafico in excel e lo incollo nella relazione in world!

> Excel se si tratta di passare dati tra fogli della solita cartella di
> lavoro ti mette a disposizione i nomi per fare riferimento agevolmente
> a celle o zone di fogli diversi (sempre della solita cartella ovvio)

> Quindi ...io capisco che vuoi copiare dati fra fogli di excel di
> cartelle di lavoro excel diverse.

> 1 soluzione kafkiana....una cartella di lavoro che ingloba i due fogli

> di excel? Forse � troppo facile da pensare?Excel gestisce bene le 3
> dimensioni!

> 2 soluzione....export su file...ogni 15 minuti check del file


> ma a prescindere....mi incuriosisce.....che cavolo di complicazione �?


> Una gestione contratti/ordini on line? Una elaborazione statistica di
> centraline rilevamento fumi o inquinamento?....son curioso!

Grazie a tutti e due per i consigli; penso che l'idea di Rafunk sia buona
(Application.CutCopyMode = False);
Per rispondere a Wodka40, si tratta di divesi file, purtroppo � un
programma abbastanza complesso che non ho creato io, devo solo
modificarlo; sono diversi file excel, per capirsi attraverso una
applicazione sotto excel va a prendersi dei dati da un server sulla rete
aziendale, sono delle posizioni di paratoie e dei livelli di acqua a
monte, excel importa questi dati, li memorizza ogni quarto d'ora in varie
cartelle a seconda della zona, e fa dei calcoli di portata scaricata
partendo da livello/apertura, niente di particolarmente complesso, solo
che sono tanti.......
Tuttavia ho scoperto che la vera voragine di memoria non sono tanto i
copia/incolla che pure contribuiscono, ma la fase di accesso al server,
per cui al momento ho cambiato sistema, prelevando tutti i dati dal server
in una sola fase e poi gestendo tutti i dati solo all'interno delle
cartelle excel sul pc la situazione � infinitamente migliorata, penso che
con l'istruzione Application.CutCopyMode = False dovrei essere a posto
Grazie di nuovo
ANtonello

Mauro Gamberini

unread,
Feb 15, 2010, 4:37:07 AM2/15/10
to
> Grazie a tutti e due per i consigli; penso che l'idea di Rafunk sia buona
> (Application.CutCopyMode = False);
>

Esiste anche il semplice:

Foglio1.Range("A1").Copy _
Destination:= Foglio2.Range("C20")

Questo evita l'utilizzo di:
Application.CutCopyMode = False

Dipende *dal contesto* in cui
effettui il tuo copia/incolla, contesto
che sinceramente non ho ben capito.

(Foglio1/Foglio2 sono indicativi, sempre
meglio utilizzare la*programmazione
ad oggetti* permessa in Excel, sopratutto
se abbiamo *diversi files di Excel* aperti
contemporaneamente)

> Tuttavia ho scoperto che la vera voragine di memoria non sono tanto i
> copia/incolla che pure contribuiscono, ma la fase di accesso al server,
> per cui al momento ho cambiato sistema, prelevando tutti i dati dal server
> in una sola fase e poi gestendo tutti i dati solo all'interno delle
> cartelle excel sul pc la situazione � infinitamente migliorata, penso che
> con l'istruzione Application.CutCopyMode = False dovrei essere a posto
>

Un altro modo, se non vuoi
vedere i dati del db nei fogli,
� caricare i dati in una Collection.
Ti crei una classe che copi il modello dei
dati che hai sul db e carichi la Collection
con oggetti derivati dalla classe.
Interrogherai poi la Collection.

Comunque l'accesso ai dati sul foglio,
sar�(se gestito bene) pi� veloce rispetto
all'accesso ai dati della Collection.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


0 new messages