Beveiliging formulier in Word aanzetten - VB

Status
Niet open voor verdere reacties.

happySurfer

Gebruiker
Lid geworden
8 nov 2007
Berichten
9
We willen graag een formulier beveiligen.

Voordat het formulier moet worden beveiligd, wordt het document met behulp van de samenvoegfunctie, gevuld met data. Dit wordt gestart door een MACRO.

Probleem is dus het document vooraf beveiligen kan niet, werkt het samenvoegen niet meer.

Oplossing ligt in de uitbreiding van de MACRO. Na het samenvoegen de beveiliging van het formulier aanzetten.

Vraag: wat moet ik mbv Visual Basic, toevoegen om de beveiliging aan te zetten??

Ben alleen bekend met het "opnemen" van een Macro en dat kan dus niet om je de beveiliging aan zet en daardoor niet de Makro kan uitzetten/afronden.
 
De beveiliging kun je uit zetten met:
ActiveDocument.Protect("wachtwoord")
En weer uit met
ActiveDocument.Unprotect("wachtwoord")
mvg leo
 
Leo,

Ik ben een leek in dit soort dingen, was denk ik al duidelijk. Heb je oplossing in de bestaande macro verwerkt, maar heb het sterke vermoeden dat ik algemene basiskennis mis voor dit soort dingen.

Heb daarom maar even de hele macro ingekopieerd, wellicht zie je kans om er even naar te kijken en (opbouwend) commentaar over te geven.

het toegevoegde gedeelte is helemaal onderaan.:D

Is trouwens "formulier" beveiliging iets anders dan "algemeen" een doument beveiligen?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Const DEBUGMODE = False

Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006

Const DELETE = &H10000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000
Const READ_CONTROL = &H20000

Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SPECIFIC_RIGHTS_ALL = &HFFFF

Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))

Const WORDEXPORT_TXT = "wordexp.doc"

Sub Document_New()
Dim sValue As String
Dim sRegKey As String
Dim sFile As String
Dim nKey As Long
Dim nType As Long
Dim nLength As Long
Dim bOk As Boolean
Dim sDoc As String
Dim sErrorLog As String

On Error GoTo fout

If DEBUGMODE = True Then
MsgBox "Deze macro staat in DEBUG mode. Aan het einde van deze macro zal gemeld worden of de uitvoering goed is gegaan." & vbCrLf & _
"DIT SJABLOON IS NIET GESCHIKT VOOR UITLEVERING !" & vbCrLf & _
"(Deze boodschap wordt alleen getoond in testversies van WORDEXPORT)", vbOKOnly + vbInformation, "DEBUG"
End If

' === INITIALISATIE ===
sRegKey = "Software\ScabKpd\Install"
sValue = "Path"
nLength = 99999
bOk = True
sDoc = ActiveDocument.Name
sErrorLog = ""

' === De registry uitlezen voor het pad ===
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRegKey, 0, KEY_READ, nKey) = 0 Then
' Zet de buffer op NULL
sFile = String$(nLength, " ")
' Haal de buffergroote (nLength) op
If RegQueryValueEx(nKey, sValue, 0, nType, sFile, nLength) = 0 Then
' Stel de buffer in
sFile = String$(nLength - 1, " ")
' Haal de bestandsnaam op
If RegQueryValueEx(nKey, sValue, 0, nType, sFile, nLength) <> 0 Then
sErrorLog = sErrorLog & "RegQueryValueEx (Fetch)" & vbCrLf
End If
' Is er een fout opgetreden ??
If sFile = "" Then bOk = False
Else
bOk = False
sErrorLog = sErrorLog & "RegQueryValueEx (Buffer)" & vbCrLf
End If
' Sluit de handle
Call RegCloseKey(nKey)
Else
'bOk = False
sErrorLog = sErrorLog & "RegOpenKeyEx" & vbCrLf
End If

' Als er geen pad wordt gevonden in de registry dan C:\ nemen
If bOk = True And sFile = "" Then
sFile = "C:\"
End If
' Controeren of het laatste teken wel een \ is
If Right$(sFile, 1) <> "\" Then sFile = sFile & "\"
' De bestandsnaam er aan plakken
sFile = sFile & WORDEXPORT_TXT

' Controleren of het bestand bestaat
If Dir(sFile) = "" Then
Call MsgBox("Het samenvoegbestand " & vbCrLf & _
sFile & vbCrLf & _
"bestaat niet. Controleer de mailing-module.", vbOKOnly + vbCritical, "Samenvoegen")
bOk = False
sErrorLog = sErrorLog & "Dir(sFile)=''" & vbCrLf
End If

' === Het samenvoegen starten ===
If bOk = True Then
With ActiveDocument.MailMerge
.OpenDataSource sFile
'.Destination = wdSendToPrinter
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
.Execute
End With

' Het bestand sluiten (zonder op te slaan)
Documents(sDoc).Close False
End If

If DEBUGMODE = True Then
If bOk = True Then
MsgBox "Er zijn geen fouten opgetreden tijdens het uitvoeren van deze macro." & vbCrLf & _
"(Deze boodschap wordt alleen getoond in testversies van WORDEXPORT)", vbOKOnly + vbInformation, "DEBUG MODE"
Else
MsgBox "Op de volgende regel is er een fout opgetreden " & vbCrLf & sErrorLog & vbCrLf & _
"(Deze boodschap wordt alleen getoond in testversies van WORDEXPORT)", vbOKOnly + vbInformation, "DEBUG MODE"
End If
End If

End
ActiveDocument.Protect ("piet")

End


fout:
bOk = False
sErrorLog = sErrorLog & "ON ERROR (" & Err.Source & "/" & Err.Description & ")" & vbCrLf
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan