07. marts 2013 - 15:02Der er
6 kommentarer og 1 løsning
Hjælp til en makro til at slette tekstfelt og det afsnit, som tekstfeltet står i
jeg har en brevskabelon, som i forenklet form ser således ud:
"For at opnå en tilladelse skal du opfylde følgende betingelser:"
Du skal fremsende en plantegning(tekstfelt1) Du skal fremsende en snittegning(tekstfelt2) Du skal fremsende en situationsplan(tekstfelt3) Du skal fremsende en energiberegning(tekstfelt4) Du skal overholde afstandskrav til skel(tekstfelt5) osv. ------------------- Er der nogle tekstfelter, som ikke skal bruges, taster man "-", og så slettes tekstfeltet på baggrund af nedenstående makro.
Sub SletTomtFelt1()
Dim f As FormField Set f = ActiveDocument.FormFields("Tekstfelt1") If f.Result = "-" Then f.Delete End If
End Sub
Problemet er bare, at der kommer tomme linjer, der hvor tekstfelterne bliver slettet. Hvordan kan jeg rette makroen, så det undgås?
Så er dit tekstfelt tilsyneladende ikke i et almindeligt, selvstændigt afsnit, hvilket var sat som forudsætning.
Du er nødt til at forklare præcis, hvor tekstfeltet findes og sammenhængen i øvrigt. Makroen gør ikke noget med markeringen. Du har måske noget i forudgående makroer, som arbejder med Selection.
Jeg har prøvet at opbygge et simpelt testdokument, som kun indeholder 2 tekstfelter (formularkontrolelementer). Dokumentet ser således ud: _ _ _ _ _ _ _ _ _ _ _
Her står en almindelig tekst. (nyt afsnit) Tekstfelt 1 (nyt afsnit) Tekstfelt 2 (nyt afsnit) Her står et andet afsnit med almindelig tekst. _ _ _ _ _ _ _ _ _ _ _
Jeg arbejder i Word 2010, men selve skabelonen er gemt som Word 97-2003-skabelon. Det kan synes mærkeligt, men alle de skabeloner jeg arbejder med linker op til bogmærker fra et andet program, som ikke kan arbejde i Word 2010. Men i ovenstående eksempel har jeg ingen links til bogmærker for at sikre mig, at det ikke griber forstyrrende ind. Mine tekstfelter(formularkontrolelementer) er indsat fra fanen Udvikler >> Kontrolelementer >> ældre formularer.
Makroerne er sat til at blive afspillet ved udgang af tekstfelterne.
Kan man forestille sig, at fejlen opstår, fordi jeg arbejder i Word 2010, men gemmer som en 97-2003 Wordskabelon?
Når koden afvikles på det tidspunkt, er du nødt til at fjerne beskyttelse først for at slette afsnittet og sætte beskyttelse igen bagefter - men det gør du måske også?
Her er din makro men den ændrede linje + to funktioner, som fjerner beskyttelse. Hvis der skal password på, skal "" erstattes med passwor: "[password]":
Sub SletTomtFelt1()
Dim f As FormField Set f = ActiveDocument.FormFields("Text1") If f.Result = "-" Then 'fjern bestkyttlse UnprotectForFormFields ActiveDocument f.Range.Paragraphs(1).Range.Delete 'beskyt igen ProtectForFormFields ActiveDocument End If
End Sub
Function ProtectForFormFields(oDoc As Document) 'Slå beskyttelse som formular TIL:
With oDoc If .ProtectionType <> wdAllowOnlyFormFields Then .Protect Password:="", NoReset:=True, Type:=wdAllowOnlyFormFields End If End With End Function
Function UnprotectForFormFields(oDoc As Document) 'Slå beskyttelse som formular FRA:
With oDoc If .ProtectionType <> wdNoProtection Then .Unprotect Password:="" End If End With End Function
Det lyder specielt med det, du forklarer om bogmærkerne, hvis bogmærkerne ikke er placeret i dokumenterne af dig/en anden bruger. Eller er det måske bare bogmærker, der hedder noget med OLELINK? - hvis det er tilfældet, dukker sådanne af og til op i forbindelse med indsættelse af kopieret indhold. De linker ikke til andre dokumenter. Ellers må du have noget kørende i Word, som er årsagen til det, f.eks.: Har du makroer med navnet AutoOpen og/eller AutoNew i Normal.dotm? Har du installeret tilføjelsesprogrammer til Word?
Velbekomme. Generelt: man er nødt til at fjerne beskyttelse for at kunne lave ændringer, som påvirker data, der ikke er inde i selve formularfelterne.
Synes godt om
Ny brugerNybegynder
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.