• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kopyala Yapıştır Engelleme

  • Konbuyu başlatan Konbuyu başlatan NIGRA
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Kod:
Private Sub Workbook_Deactivate()
    Application.OnKey "^c"
    Application.OnKey "^v"
    For Each Copy In Application.CommandBars.FindControls(Id:=19)
    Copy.Enabled = Evn
    Next Copy
End Sub

Private Sub Workbook_activate()
    Application.OnKey "^c", ""
    Application.OnKey "^v", ""
    For Each Copy In Application.CommandBars.FindControls(Id:=19)
    Copy.Enabled = Evn
    Next Copy
End Sub


Bu kod ve benzeri türevleri mevcut forumumuzda daha önce paylaşılmış. Ancak ya modüle yada çalışma kitabına yapıştırılan türevi var. Buda dosyadaki tüm sayfaları etkiliyor.

Bunu sadece istediğim sayfalar özelinde nasıl değiştirebilirim?

Private Sub Worksheet_activate() diye başladım koda ve sayfanın code kısmına yapıştırdım ama olmadı.

Yardımlarınızı rica ediyorum.
 
Sayfanın kod kısmında deneyin

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = False
End Sub
 
1. Aşağıdaki kodları Standart Makro sayfasına yapıştırın.
Kod:
Option Explicit

 
Sub ToggleCutCopyAndPaste(Allow As Boolean)
     'Kes, kopyala, yapıştır ve özel menü öğelerini etkinleştir / devre dışı bırak
    Call EnableMenuItem(21, Allow) ' Kes
    Call EnableMenuItem(19, Allow) ' Kopyala
    Call EnableMenuItem(22, Allow) ' Yapıştır
    Call EnableMenuItem(755, Allow) ' Özel yapıştır
    
     'Sürükle ve bırak özelliğini devre dışı bırak / etkinleştir
    Application.CellDragAndDrop = Allow
    
     'Kes, kopyala, yapıştır ve yapıştır özel kısayol tuşlarını etkinleştir / devre dışı bırak
    With Application
        Select Case Allow
        Case Is = False
            .OnKey "^c", "CutCopyPasteDisabled"
            .OnKey "^v", "CutCopyPasteDisabled"
            .OnKey "^x", "CutCopyPasteDisabled"
            .OnKey "+{DEL}", "CutCopyPasteDisabled"
            .OnKey "^{INSERT}", "CutCopyPasteDisabled"
        Case Is = True
            .OnKey "^c"
            .OnKey "^v"
            .OnKey "^x"
            .OnKey "+{DEL}"
            .OnKey "^{INSERT}"
        End Select
    End With
End Sub
 
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
     'Belirli menü öğesini etkinleştir / devre dışı bırak
    Dim cBar As CommandBar
    Dim cBarCtrl As CommandBarControl
    For Each cBar In Application.CommandBars
        If cBar.Name <> "Clipboard" Then
            Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
            If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
        End If
    Next
End Sub
 
Sub CutCopyPasteDisabled()
     'Kullanıcıya işlevlerin devre dışı bırakıldığını bildir
    MsgBox "Bu çalışma sayfasında kesme, kopyalama ve yapıştırma devre dışı bırakıldı!!"
End Sub

2 .Aşağıdaki kodları engellemek istediğniz Sayfanın makro kısmına ekle

Kod:
Option Explicit

Private Sub Worksheet_Activate()
   Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Worksheet_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Call ToggleCutCopyAndPaste(False)
End Sub
 
1. Aşağıdaki kodları Standart Makro sayfasına yapıştırın.
Kod:
Option Explicit


Sub ToggleCutCopyAndPaste(Allow As Boolean)
     'Kes, kopyala, yapıştır ve özel menü öğelerini etkinleştir / devre dışı bırak
    Call EnableMenuItem(21, Allow) ' Kes
    Call EnableMenuItem(19, Allow) ' Kopyala
    Call EnableMenuItem(22, Allow) ' Yapıştır
    Call EnableMenuItem(755, Allow) ' Özel yapıştır
   
     'Sürükle ve bırak özelliğini devre dışı bırak / etkinleştir
    Application.CellDragAndDrop = Allow
   
     'Kes, kopyala, yapıştır ve yapıştır özel kısayol tuşlarını etkinleştir / devre dışı bırak
    With Application
        Select Case Allow
        Case Is = False
            .OnKey "^c", "CutCopyPasteDisabled"
            .OnKey "^v", "CutCopyPasteDisabled"
            .OnKey "^x", "CutCopyPasteDisabled"
            .OnKey "+{DEL}", "CutCopyPasteDisabled"
            .OnKey "^{INSERT}", "CutCopyPasteDisabled"
        Case Is = True
            .OnKey "^c"
            .OnKey "^v"
            .OnKey "^x"
            .OnKey "+{DEL}"
            .OnKey "^{INSERT}"
        End Select
    End With
End Sub

Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
     'Belirli menü öğesini etkinleştir / devre dışı bırak
    Dim cBar As CommandBar
    Dim cBarCtrl As CommandBarControl
    For Each cBar In Application.CommandBars
        If cBar.Name <> "Clipboard" Then
            Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
            If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
        End If
    Next
End Sub

Sub CutCopyPasteDisabled()
     'Kullanıcıya işlevlerin devre dışı bırakıldığını bildir
    MsgBox "Bu çalışma sayfasında kesme, kopyalama ve yapıştırma devre dışı bırakıldı!!"
End Sub

2 .Aşağıdaki kodları engellemek istediğniz Sayfanın makro kısmına ekle

Kod:
Option Explicit

Private Sub Worksheet_Activate()
   Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Call ToggleCutCopyAndPaste(False)
End Sub

Private Sub Worksheet_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ToggleCutCopyAndPaste(False)
End Sub


Merhaba
Bu kodları denildiği şekilde uyguladım fakat bir sorun ortaya çıktı, bu kodları uyguladığım «liste» sayfasının yanısıra çalıştığım diğer kitabların sayfalarına geçtiğimde buralarda da kod çalışarak kopyala yapıştırı iptal ediyor ben sadece liste sayfasında bu kodun çalışmasını istiyorum, yardımcı olur musunuz
 
... «liste» sayfasının yanı sıra çalıştığım diğer kitapların sayfalarına geçtiğimde buralarda da kod çalışarak kopyala yapıştırı iptal ediyor ben sadece liste sayfasında bu kodun çalışmasını istiyorum ...

Merhaba, kodları doğru yere kopyaladığınızdan emin olun. Arkadaşımız, engellenmesini istediğiniz sayfanın kod kısmına yazmanızı belirtmiş. Eğer doğru yere yaptıysanız bırakın başka çalışma kitabını, başka sayfa da bile kodların çalışmaması gerekir.
Kontrol ediniz, iyi çalışmalar.

1. Aşağıdaki kodları Standart Makro sayfasına yapıştırın.
Kod:
...
2 .Aşağıdaki kodları engellemek istediğiniz Sayfanın makro kısmına ekle
Kod:
...
 
Resimden de görüleceği üzere makrosuz kitap etkin ve A2 hücresine ctrl + X yapılmış bu kitapta makro olmadığı halde makro çalışmış
 

Ekli dosyalar

  • res.jpg
    res.jpg
    161.9 KB · Görüntüleme: 10
Engelleme uyguladığınız sayfadan çıkmadan diğer açık Excel dosyaları ve sayfalarında Kopyala Yapıştır Sürükle bırak özelliklerini kullanamazsınız.
 
Merhaba;

Forumda ararken bu başlığı buldum. Bunun üzerinden sormak istiyorum.
Kes, kopyala, yapıştır için engelleme var.
Peki satır ekleme için engelleme var mı ?

Call EnableMenuItem(21, Allow) ' Kes
Call EnableMenuItem(19, Allow) ' Kopyala
Call EnableMenuItem(22, Allow) ' Yapıştır
Call EnableMenuItem(755, Allow) ' Özel yapıştır

Kes 21, kopyala 19 ise satır ekleme numarası nedir ?
 
Engelleme uyguladığınız sayfadan çıkmadan diğer açık Excel dosyaları ve sayfalarında Kopyala Yapıştır Sürükle bırak özelliklerini kullanamazsınız.
merhabalar bu kodu kullandım şimdi hiç bir excelim de kopyala sürükleme falan çıkmıyor çalışmıyor bilgisayarı açıp kapatsam o kodun olduğu exceli silsem dahi düzelmiyor maalesef komple excelin altyapısından mı sildi ne yaptı bunun eski haline alabilmemin yolu varmı
 
4.Mesajdaki alttaki koddaki falseyi true olarak değiştirip diğer sayfa kodlarını silin deactive gibi yani.
Exceli kaydetip kapatıp açın çalışmqsı gerek diye düşünüyorum deneyemeden.

Private Sub Worksheet_Activate() Call ToggleCutCopyAndPaste(False) End Sub
 
4.Mesajdaki alttaki koddaki falseyi true olarak değiştirip diğer sayfa kodlarını silin deactive gibi yani.
Exceli kaydetip kapatıp açın çalışmqsı gerek diye düşünüyorum deneyemeden.

Private Sub Worksheet_Activate() Call ToggleCutCopyAndPaste(False) End Sub


denedim eski kodları zaten silmiştim bunu yaptım bi değişiklik olmadı
 
Geri
Üst