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

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
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

Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
anladım desem yalan söylemiş olurum ama zihnize ve emeğinize sağlık. emek verilmiş bi çalışma
 
Katılım
22 Nisan 2010
Mesajlar
530
Excel Vers. ve Dili
Excel 2007 TR
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.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
2003 uzantılı olan bir dosya ekledim, inceleyin.
 
Katılım
15 Nisan 2011
Mesajlar
9
Excel Vers. ve Dili
office 2010
Yalnızca farklı kaydetmeyi engellemek mümkün mü acaba ? Kullanıcı sadece veri girişi yapabilsin ve kaydetsin.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
ClassModule içindeki "DocumentBeforePrint" kodunu kapatın yada silin.
 
Katılım
29 Ocak 2009
Mesajlar
1
Excel Vers. ve Dili
2003 tr
Merhaba ;
yapılan makro işlemleri Alt+f11 ile girilip stop edildiği zaman etkisiz hale gelmekte buna çözüm var mıdır?
 
Üst