Avatar billede erlandsen Seniormester
01. november 2009 - 20:59 Der er 4 kommentarer og
1 løsning

Dokumentbeskyttelse til/fra

Nogen der kan oversætte nedenstående to linier?:

If intprotectionType <> wdNoProtection Then
WordDoc.Protect Type:=intprotectionType, noreset:=True

Forklaring:
Vi har nogle standardbreve som får slået dokumentbeskyttelse til - for at formularfunktionen fungerer - efter at vi overfører nogle informationer fra Access.

Vi havde så det problem, at registrer ændringer automatisk også blev slået til, hvis dokumentet ikke var lavet som formular og formularen var beskyttet. Dette er nu løst ved at alle standardbrevene er lavet som formular og er beskyttet, og således er registrer ændringer ikke slået til mere. Hurra!

Vi har dog et standardbrev som ikke skal være en formular - og derfor skal dokumentbeskyttelse ikke slås til i det dokument.
Avatar billede Lene Fredborg Ekspert
01. november 2009 - 23:17 #1
Der kan ikke svares helt præcist på dit spørgsmål, fordi der benyttes en variabel, "intprotectionType", og de to linjer, du har vist, indeholder ikke den del af koden, som fortæller, hvilken værdi "intprotectionType" har, når koden afvikles. De to linjer gør følgende: hvis dokumentet "WordDoc" ikke er beskyttet (<> wdNoProtection), vil koden slå beskyttelse til og sætte typen af beskyttelse lig med værdien af "intprotectionType" (noreset:=True betyder, at formularfelterne beholder deres værdier).

Et dokument kan være beskyttet på forskellige måder. For at beskytte som formular, skal beskyttelsen være af typen wdAllowOnlyFormFields (eller 2). Typerne er:

1    wdAllowOnlyComments
2    wdAllowOnlyFormFields
3    wdAllowOnlyReading
0    wdAllowOnlyRevisions
-1  wdNoProtection

En kommentar til jeres løsning:
For mig lyder det, som om hele jeres problem med, at registrer ændringer blev slået til, kommer af, at "intprotectionType" (eller noget et andet sted i den kode, der bruges) er sat til en forkert type beskyttelse, nemlig wdAllowOnlyRevisions (kan også være angivet ved værdien 0). Denne type beskyttelse er beregnet til at bruge i dokumenter, hvori brugerne kun må foretage synlige ændringer og intet andet, og den slår derfor registrering af ændringer til. Det er en dårlig idé at beskytte dokumenter, som ikke har brug for beskyttelse (formularer skal derimod være beskyttet for at virke). Der er rigtig mange funktioner, der er sat ud af spil i beskyttede dokumenter. Prøv i stedet at finde det sted, hvor beskyttelsen bliver sat forkert og ret det, så I kan fjerne beskyttelsen fra dokumenterne, der ikke har grund til af være beskyttet/være formularer.
Avatar billede erlandsen Seniormester
02. november 2009 - 08:02 #2
Tak for dine input lene-fredborg...
Fandt flg. kode yderligere...

Dim intprotectionType As Integer
If WordDoc.ProtectionType <> wdNoProtection Then
'sæt variablen til beskyttelsestypen, inden beskyttelsen fjernes
intprotectionType = WordDoc.ProtectionType
WordDoc.Unprotect
End If
Avatar billede erlandsen Seniormester
02. november 2009 - 08:05 #3
Oops - fandt lidt mere...

Dim intprotectionType As Integer
If WordDoc.ProtectionType <> wdNoProtection Then
'sæt variablen til beskyttelsestypen, inden beskyttelsen fjernes
intprotectionType = WordDoc.ProtectionType
WordDoc.Unprotect

og lidt længere nede...

If intprotectionType <> wdNoProtection Then
WordDoc.Protect Type:=intprotectionType, noreset:=True
Avatar billede Lene Fredborg Ekspert
02. november 2009 - 10:09 #4
Det går galt med din brug af intprotectionType i koden, f.eks. her:

If intprotectionType <> wdNoProtection Then
WordDoc.Protect Type:=intprotectionType, noreset:=True

På det tidspunkt har intprotectionType tilsyneladende værdien 0, og du sætter nu beskyttelsen til værdien af intprotectionType , dvs. 0, som er lig med wdAllowOnlyRevisions. Det er meget mere sikkert at bruge de navngivne konstanter, når du skal beskytte dokumentet. Så har du styr på, hvad der sker.

Her er kode, som gør det rigtigt - HUSK at ændre password til det rigtige (hvis der ikke skal password på, så brug en tom streng, "",

--------------
Slå beskyttelse som formular TIL:

    With WordDoc
        If .ProtectionType <> wdAllowOnlyFormFields Then
            WordDoc.Protect Password:="abc", NoReset:=True, Type:=wdAllowOnlyFormFields
        End If
    End With

--------------
Slå beskyttelse som formular FRA:

    With WordDoc
        If .ProtectionType <> wdNoProtection Then
            .Unprotect Password:="abc"
        End If
    End With
Avatar billede erlandsen Seniormester
15. oktober 2010 - 15:08 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester