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?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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.