• DİKKAT

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

Word Dökümanı İçinde Kaydet, Farklı Kaydet, Yazdırma İşlevlerini Kapatma(Engelleme).

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,770
Excel Vers. ve Dili
Excel 2019 Türkçe
Word Dökümanı İçinde Kaydet, Farklı Kaydet, Yazdırma İşlevlerini Kapatma(Engelleme,Yasaklama)ve Dökümanı İçeriğinin Değiştirmesini Engelleme.

Bir çalışmamı sizinle paylaşmak istiyorum. Bu çalışmadaki amacım, ISO prosedürlerinin kullanıcılar tarafından kopyalanmasını, yazdırılmasını ve değiştirilmesini engellemek, sadece okunmasını sağlamaktı. Kullanıcıların Word dökümanlarına ulaşımını sağlamak için bir Script dosyası kullandım. Bu Scirpt dosyasının görevi ise Makro güvenlik düzeyini aşmak idi. Bu şekilde bir kullanım için Word dosyalarını dışarıdan açacak bir Scipt dosyasına ihtiyacınız olacaktır.

Bir Script Dosyası Nasıl Oluşturulur Derseniz...
MasaÜstü üzerinde bir Metin Belgesi oluşuturun, aşağıdaki kodu içine ekleyin ve dosyayı farklı kaydederken dosya ismi sonuna Vbs uzantısını(Örneğin: Yeni.Vbs) şeklinde ekleyin.
Kod:
Dim word
Set word = CreateObject("word.application")
word.Documents.Open "C:\dene.docx" ' Dosyanın bulunduğu yolu kendinize göre ayarlayın.
word.Visible = True


1-Bir Word Dökümanı açın Alt+F11 tuşuna basın.ThisDocument. içine aşağıdaki kodu ekleyin.
Kod:
Private Sub Document_Open()
    If ActiveDocument.ProtectionType = wdNoProtection Then
        ActiveDocument.Protect _
    Type:=wdAllowOnlyFormFields, NoReset:=True, [b][color=blue]Password:="5"[/b][/color]
    End If
    ActiveWindow.View.ReadingLayout = True
    ActiveWindow.View.ReadingLayoutActualView = True
    Call Register_Event_Handler
End Sub
2-Vba Editörü içindeyken Insert menüsünden bir Module ve içine de aşağıdaki kodu ekleyin.

Kod:
Dim X As New Class1
Sub Register_Event_Handler()
    Set X.app = Word.Application
End Sub

3-Yine Vba Editörü içindeyken Insert menüsünden bir Class Module ve içine de aşağıdaki kodu ekleyin.

Kod:
Public WithEvents app As Word.Application
Private Sub app_DocumentBeforePrint _
        (ByVal Doc As Document, _
        Cancel As Boolean)
 MsgBox "Bu Belgeyi Yazdırma İzniniz Yoktur.": Cancel = True
End Sub
Private Sub app_DocumentBeforeSave _
        (ByVal Doc As Document, _
        SaveAsUI As Boolean, _
        Cancel As Boolean)
MsgBox "Bu Belgeyi Kaydetme İzniniz Yoktur.": Cancel = True 'Kaydetme İşlevini Engellemek İçin.
'If SaveAsUI = True Then MsgBox "Bu Belgeyi Farklı Kaydetme İzniniz Yoktur.": Cancel = True 'Farklı Kaydetmeyi İşlevini Engellemek İçin.
End Sub
Private Sub app_WindowSelectionChange(ByVal Sel As Selection)
If ActiveWindow.View.ReadingLayout = False Then
ActiveDocument.Close False
End If
End Sub

07/02/2012 Tarihinde Güncellenmiştir.
 

Ekli dosyalar

anladım desem yalan söylemiş olurum ama zihnize ve emeğinize sağlık. emek verilmiş bi çalışma
 
Sayın Hamitcan;

Değerli paylaşımlarınız için teşekkürler. Örneklerden hareket ile yapmaya çalıştım ama maalesef olmadı. 2003 kullanıyorum. Vbs uzantılı dosyada örnekte ":\dene.docx" dosyasınmı görünce 2007 veya üstünde olabiliyor diye düşündüm. Yine de teşekkür ederim.
 
2003 uzantılı olan bir dosya ekledim, inceleyin.
 
Yalnızca farklı kaydetmeyi engellemek mümkün mü acaba ? Kullanıcı sadece veri girişi yapabilsin ve kaydetsin.
 
ClassModule içindeki "DocumentBeforePrint" kodunu kapatın yada silin.
 
Merhaba ;
yapılan makro işlemleri Alt+f11 ile girilip stop edildiği zaman etkisiz hale gelmekte buna çözüm var mıdır?
 
Geri
Üst