01. november 2009 - 20:59Der 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.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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:
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.
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
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
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
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.