Problemet opstår, når nogle af bogmærkerne er tomme. Så bliver der alt for mange mellemrum mellem husnummeret og postnummer - fx Vestergade 3 , 4930 Maribo.
Kan der laves en makro, som sletter tomme bogmærker?
Der kan godt laves en makro, men det er vel ikke bare bogmærkerne, der skal slettes? Er det ikke snarere mellemrum før eller efter bogmærkerne, der giver den ekstra afstand?
Det er nødvendigt at vide, hvordan teksten er bygget op - ellers kan makroen ikke laves korrekt.
Et eksempel på en brevskabelon kunne se således ud:
Varsel af påbud og partshøring - Gadenavn_Gadenavn Husnr Husbogstav, Etage SideDørNr, Postnr Gadenavne_Område
Hvis alle bogmærker er udfyldt, vil det se således ud: Varsel af påbud og partshøring - Vestergade 3 A, st. tv., 4930 Maribo.
Jeg kan dog se nogle udfordringer i forhold til kommaerne. Hvis adressen hverken indeholder etage eller sidedør, ender jeg med to kommaer ved siden af hinanden.
Hvordan bliver data indsat i dokumenterne - er det via flettefelter (MERGEFIELD) eller via VBA og en UserForm eller???
Hvis det er via flettefelter, kan du opbygge flettefelterne med betingelser som foreslået af erikjuul (men som jeg læser din forklaring lyder det ikke til at være tilfældet).
En makro noget i retning af nedenstående kan bruges. Måske du har brug for at rette noget til afhængigt af, hvordan det er, ekstra mellemrum og kommaer forekommer.
Makroen er baseret på, at du omkring hele område (måske et enkelt afsnit), hvor adressen findes, indsætter et bogmærke med navnet "HeleAdressen" (du kan kalde det hvad du vil - skal så blot rette tilsvarende i makroen). Hvis du har andre måder at finde stedet i dokumentet på, kan du bruge det i stedet.
Makro:
Sub ReplaceDoubleSpacesAndCommasBySingle() Dim rngAdresse As Range
With ActiveDocument If .Bookmarks.Exists("HeleAdressen") Then Set rngAdresse = .Bookmarks("HeleAdressen").Range
'Find all occurrences of two spaces and two commas and delete by a single With rngAdresse Do Until InStr(1, .Text, " ") = 0 And _ InStr(1, .Text, ",,") = 0 .Text = Replace(.Text, " ", " ") .Text = Replace(.Text, ",,", ",") Loop End With End If End With
Tilføjelse til makro: Metoden med brug af Replace forudsætter, at teksten ikke indeholder speciel formatering på dele af tekstn, da sådan formatering vil gå tabt.
Velbekomme. Det var godt, du fik det til at virke.
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.