Just nu i M3-nätverket
Gå till innehåll

Lite småknepigt macro.


Tophe

Rekommendera Poster

Jag håller på och formattera en text.

Texten är ett slags uppslagsverk där varje rad börjar med uppslagsordet följt av ett komma, sedan kommer beskrivningen.

 

Typ:

 

Apelsin, frukt från ett annat land
Banan, en slags kaktus
Uggla, en konstig fågel
....
.

 

osv.

 

Jag skulle behöva ett macro som gör detta:

 

Sätter in ett radbryt i början av varje rad. Byter ut första kommat på raden mot ett radbryt. Så att texten ser ut så här:

 

Apelsin
frukt från ett annat land

Banan
en slags kaktus

Uggla
en konstig fågel

 

Vet nån hur jag ska gå till väga? Vilket program ska jag använda?

Extremt tacksam för hjälp!

 

 

 

[inlägget ändrat 2005-07-09 19:57:20 av Tophe]

Länk till kommentar
Dela på andra webbplatser

Hej

Inget makro, men..

Via Sök/Ersätt under Redigeramenyn ska du kunna fixa det. Klicka på knappen längst ner på sidan, Special, och kolla där. Det finns bl a Manuell radbrytning. Det borde väl funka?

 

Länk till kommentar
Dela på andra webbplatser

Tack, men det går tyvärr inte.

 

Grejen är att det är fruktansvärt mycket text, det skulle ta flera dagar att göra det manuellt.

 

Dessutom innehåller texten många komman och jag vill bara byta ut det första kommat på varje rad mot ett radbryt.

 

Jag behöver alltså något slags Macro, det finns ingen möjlighet att göra det manuellt.

 

Länk till kommentar
Dela på andra webbplatser

Mitt första makro för Word:

 

Sub test()
   With Me
       For i = 1 To .Characters.Count
           If (i > .Characters.Count) Then
               Exit For
           End If
           If .Characters(i) = "," Then
               .Characters(i) = Chr(10)
               .Characters(i + 1).Delete
           End If
       Next i
   End With
End Sub

 

Testa och se vad som sker, jag lovar inget så gör en kopia av ditt material först :)

 

Detta exempel utgår från att tecknet ',' enbart förekommer melan uppslagsord och text, aldrig i texten. Likaså att det finns ett mellanslag mellan ',' och texten. Om inte måste fler villkor/kollar byggas in.

 

Edit:Fast ser att jag inte riktigt gör det du önskar, en ny rad måste vist infogas också...

 

Får se om jag lyckas med det under tiden som jag lyssnar/ser på Iron Maiden.

 

Edit2: Fast hela lösningen beror på hur uppslagsorden är delade. Ingen vana av Word så jag kan inte ge någon allmän lösning. Är det en ny rad som ska infogas eller ska bara avståndet mellan posteran ökas (dubbel radhöjd emellan exempelvis:

Sub test2()
   With Me
       i = 1
       For Each p In .Paragraphs
        '   MsgBox p
       p.LineUnitAfter = 2


       Next p
   End With

End Sub

om det nu är uppdelat som paragrafer dvs...

 

 

 

edit3

 

Asch, nu ids jag inte mer...

 

Edit4

Jo, jag snyggade till första kodstycket, bytte for each mot en vanlig for-sats

 

Edit5

Jo, kanske denna fungera och kan bryta rader åt dig. Fast kör denna INNAN du kör koden ovan...

Sub newLine()
 With Me
       For i = 1 To .Characters.Count
           If (i > .Characters.Count) Then
               Exit For
           End If
           c = .Characters(i)
           If c = Chr(11) Or c = Chr(10) Or c = Chr(13) Then
               c = .Characters(i + 1)
               If c = Chr(11) Or c = Chr(10) Or c = Chr(13) Then
                   .Characters(i).Delete
                   .Characters(i + 1).Delete
                   .Characters(i - 1).InsertAfter Chr(10)
                   i = i + 1
               Else
                   .Characters(i).Delete
                   .Characters(i - 1).InsertAfter Chr(10)
                   .Characters(i - 1).InsertAfter Chr(10)
                   i = i + 1
               End If

           End If
       Next i
   End With
End Sub

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

 

 

 

[inlägget ändrat 2005-07-09 22:32:33 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Fantastiskt! Tack.

Jag har inte hunnit kolla än. Ska göra det under veckan.

Tack så hemskt mycket.

 

 

 

Återkommer och berättar hur det gick.

 

Länk till kommentar
Dela på andra webbplatser

Som du beskriver problemet kan det lösas med Sök och ersätt.

 

Se ett exempel på bifogad bild där du ser texten före och efter Sök och ersätt och parametrarna i dialogrutan.

 

Exemplet förutsätter manuella radbrytningar mellan artiklarna. Jag har lagt in ett extra kommatecken på den första raden för att visa att metoden hanterar även detta.

 

I hjälpfilen till Word finns all information om hur detta fungerar om man bara vet vad man letar efter :(

 

 

 

[bild bifogad 2005-07-10 01:38:15 av Anders_b2]

727844_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Tack! Jag provar det först.

Men finns det nåt sätt att få automatiskt radbryt mellan artiklarna. Det handlar om flera tusen artiklar.

 

Länk till kommentar
Dela på andra webbplatser

Men finns det nåt sätt att få automatiskt radbryt mellan artiklarna.

 

Vad menar du? Min metod lägger ju till en extra radbrytning mellan varje artikel. Prova först, fråga sen.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...