disabilitare funzione copia incolla



  • 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!