disabilitare funzione copia incolla
Hai un problema con Excel? 
disabilitare funzione copia incolla
di aresca data: 18/06/2015 09:29:23
Ciao, per cortesia esiste un codice che mi dia la possibilità di disabilitare in un singolo file (non per tutto excel) le funzione ctrl+c e ctrl+v e relativi pulsanti?
se non fosse possibile... come posso far comparire una message box all'utente che sta effettuando un ctrl+v od un incolla da pulsante... che non deve farlo ma deve digitare il valore a mano?
grazie
di Marius44 data: 18/06/2015 10:23:48
Hai fatto dei tentativi? Hai provato a cercare nello "storico"? Hai fatto un giro in rete?
Con un piccolo sforzo trovi tutto il codice che vuoi e ... lo adatti alle tue esigenze.
Ciao,
Mario
di alfrimpa data: 18/06/2015 10:37:02
Ciao Aresca ed un caro saluto a Mario.
Solo un piccolo suggerimento: devi utilizzare
Application.OnKey
Alfredo
di aresca data: 18/06/2015 10:46:06
Ciao e grazie per le risposte...
@Mariu44 - ho provato sia con i vecchi post, che in rete ma l'unico codice che ho trovato e che tra l'altro avrebbe disabilitato in apertura e riabilitato in chiusura, non funziona... mi da un errore in un funzione "for each control in" nonstante (ho verificato bene...) io abbia copiato il codice correttamente. Mi scuso... ho pensato di chiedere aiuto.
@alfrimpa - ti ringrazio... potresti darmi qualche aiuto in piu? Perdona...
di alfrimpa data: 18/06/2015 10:54:44
Ciao Aresca
Con questa istruzione
Application.OnKey "^C", "Macro1"
Alla pressione dei tasti CTRL+C viene eseguita la macro1 in cui puoi mettere un msgbox di warning
Con questa istruzione
Application.OnKey "^C"
ripristini il normale funzionamento di CTRL+C
Ovviamente il discorso è lo stesso per il CTRL+V
Prova.
Alfredo
di alfrimpa data: 18/06/2015 10:56:36
Però con una piccola ricerca su Internet avresti trovato tutto
Alfredo
di aresca data: 18/06/2015 12:42:15
@alfrimpa -
Su internet ho trovato questo a cui ho cambiato il testo del MSGbox... ma non mi funziona...
Sub TestOnKey()
' Disable Ctrl+C
' Application.OnKey "^c", "CopyMsg"
' Disable Ctrl+v
' Application.OnKey "^v", "CopyMsg"
' Restore Ctrl+C
' Application.OnKey "^c"
' Restore Ctrl+v
' Application.OnKey "^v"
End Sub
Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA. DIGITA IL NUMERO DI MUTUO MANUALMENTE"
End Sub |
di alfrimpa data: 18/06/2015 13:52:45
Ciao Aresca
Ma è ovvio che non ti funzioni!
Devi togliere gli apostrofi che sono a sinistra di Application.OnKey......
Poi deve funzionare.
Alfredo
di aresca data: 18/06/2015 14:05:34
Ciao alfrima,
ho provato così... ma niente da fare...
il codice ho provato a metterlo sia in ThisWorkbook che in foglio1...
cosa potrebbe essere??
Sub TestOnKey()
Application.OnKey "^c", "CopyMsg"
Application.OnKey "^v", "CopyMsg"
Application.OnKey "^c"
Application.OnKey "^v"
End Sub
Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA. DIGITA IL NUMERO DI MUTUO MANUALMENTE"
End Sub |
di alfrimpa data: 18/06/2015 14:37:54
Ciao Aresca
Perdonami ma a scuola si diceva: "quando si copia si deve anche sapere cosa si copia".
E' ovvio che la sub così com'è "non funziona" o meglio funziona correttamente.
Considera le istruzioni:
Application.OnKey "^c", "CopyMsg"
Application.OnKey "^v", "CopyMsg"
Application.OnKey "^c"
Application.OnKey "^v"
Le prime due disabilitano il CTRL+C e CTRL+V ed eseguono la macro "Copymsg"; le seconde due ne ripristinano il normale funzionamento.
Quindi tu devi spezzare la macro in due routine una che disabilita e l'altra che riabilita.
Quanto a dove inserire il codice lo puoi fare:
1) In un modulo standard ed in questo caso le devi lanciare come normali macro;
2) In ThisWorkBook attraverso l'evento WorkBook_Open
3) Su uno specifico foglio ad esempio con l'evento WorkSheet_Activate
Per ripristinare il normale funzionamento dei tasti la seconda macro può essere inserita:
1) In ThisWorkBook attraverso l'evento WorkBook_BeforeClose
2) Su uno specifico foglio ad esempio con l'evento WorkSheet_DeActivate
Ma queste sono solo alcune delle possibili alternative.
Spero di essere stato chiaro.
Alfredo
di aresca data: 18/06/2015 15:06:31
@alfrimpa
caro e paziente alfrimpa...
io avrei provato così... ma mi dice: "errore di compilazione. La dichiarazione della routine non corrisponde alla descrizione dell'evento o della routine con lo stesso nome"...
Private Sub Workbook_Open()
Application.OnKey "^c", ""
Application.OnKey "^v", ""
End Sub
Private Sub Workbook_BeforeClose()
Application.OnKey "^c"
Application.OnKey "^v"
End Sub
Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA. DIGITA IL NUMERO DI MUTUO MANUALMENTE"
End Sub
|
di aresca data: 18/06/2015 15:13:34
cortese e paziente alfrimpa, il codice che ho inserito, mi correggo, è in realtè questo ed il messaggio di errore predetto mi indica come sbagliata la stringa:
Private Sub Workbook_BeforeClose()
Private Sub Workbook_Open()
Application.OnKey "^c", "CopyMsg"
Application.OnKey "^v", "CopyMsg"
End Sub
Private Sub Workbook_BeforeClose()
Application.OnKey "^c"
Application.OnKey "^v"
End Sub
Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA. DIGITA IL NUMERO DI MUTUO MANUALMENTE"
End Sub |
di alfrimpa data: 18/06/2015 15:17:51
Ciao Aresca
Ti ho messo le macro come devono essere (ti eri mangiato "qualcosa").
Le prime due vanno in ThisWorkBook e la seconda in un modulo standard.
Ti ho allegato anche il file "Tasti" che funziona.
Alfredo
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^c"
Application.OnKey "^v"
End Sub
Private Sub Workbook_Open()
Application.OnKey "^c", "CopyMsg"
Application.OnKey "^v", "CopyMsg"
End Sub
Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA. DIGITA IL NUMERO DI MUTUO MANUALMENTE"
End Sub
|
di aresca data: 18/06/2015 15:32:08
@alfreimpa - ottimo... grazie ancora...
giusto per concludere... a questo codice si puo aggiungere anche la parte che inibisce anche i pulsanti della barra dei pulsanti in alto?
Magari l'utente li usa al posto dei vari ctrl+c o ctrl+v
di alfrimpa data: 18/06/2015 15:56:59
Ciao Aresca
Sicuramente la cosa si potrà realizzare ma per farlo occorre avere una conoscenza del VBA piuttosto approfondita (cosa che io non sento di avere) ed inoltre ho letto da più parti che se non si ha una padronanza più che adeguata, per evitare "casini" inenarrabili, meglio lasciar stare le barre dei menù così come sono.
Alfredo
P.S. Comunque se trovo qualcosa ci risentiamo
di aresca data: 18/06/2015 15:59:33
Ti ringrazio tantissimo
di alfrimpa data: 18/06/2015 16:10:58
Ma non c'è di che!
Solo che, ammesso che riesca a trovare qualcosa, sarà comunque a tuo rischio e pericolo
La gestione delle "CommandBars" è a livello di Application quindi alla chiusura del file le barre dei menù vanno ripristinate sempre da codice.
Alfredo
di alfrimpa data: 18/06/2015 16:12:49
Scusa ma tu che versione di Excel utilizzi? Spero la 2007
di aresca (utente non iscritto) data: 18/06/2015 17:22:07
Confermo... la 2007!
Vuoi Approfondire?