Word VBA - naredi odstavek pred ...

Pomoč pri izdelavi makrov
Odgovori
Uros22
Prispevkov: 14
Pridružen: Če Jan 14, 2010 10:59 am

Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a Uros22 »

Pozdravljeni,

sestavljam makro v Word VBA pa mi primankuje idej. Kako bi sestavil makro, ki bi v odstavku|celotnem dokumentu pred uro zapisano kot (07:30, 13:00 ali 23:25) naredil odstavek. Izziv sem skušal rešiti tako, da bi poiskal ":" in bi se nato s sendkeys metodo premaknil dva znaka v levo in nato naredil odstavek.

Ima kdo boljšo rešitev?

Hvala že v naprej za pomoč.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a admin »

Za rešitev vašega problema ne potrebujete makrov, temveč lahko to dosežete z uporabo funkcije najdi in zamenjaj. Zaukažete ji, naj najde dve cifri, ki jima sledi podpičje in spet dve cifri. To naj zamenja z znakom za novo vrstico, ki mu doda najdeni niz.

Seveda pa je potrebno Wordu nekako zaukazati, kako naj najde dve cifri, presledek... To dosežete z uporabo nadomestnih vzorcev, kot je opisano v blogu: Rešitev je torej da izberete orodje najdi in zamenjaj, ter:
  1. v polje najdi vpišete

    Koda: Izberi vse

    ([0-9][0-9]:[0-9][0-9])
  2. v polje zamenjaj vpišete

    Koda: Izberi vse

    ^p\1
  3. obvezno označite, naj Word uporablja nadomestne vzorce.
  4. Izvedete zamenjavo vseh najdenih elemeentov
In to je to ;).

Če pa iz tega posnamete makro – v kolikor to res potrebujete v kodi – pa dobite sledeč makro:

Koda: Izberi vse

'
' www.matjazev.net
'   avgust 2011
'
Sub PredVseCaseVstaviPraznoVrstico()
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = "([0-9][0-9]:[0-9][0-9])"
    .Replacement.Text = "^p\1"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub
lp,
Matjaž Prtenjak
Administrator
Uros22
Prispevkov: 14
Pridružen: Če Jan 14, 2010 10:59 am

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a Uros22 »

Matjaž,

hvala za prompten odziv in odlično razlago. Razlog zakaj nisem uporabil naprednega iskanja je v tem, da sem napredno iskanje v makru že uporabi in me "muči" ponovna raba, saj si Word očitno zapomni nastavitve predhodnega naprednega iskanja, ne znam pa ga resetirati.

Še kakšna ideja?
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a admin »

Tale razlog vam pa nekako ne pije vode? Katero nastavitev pa naj bi si Word zapomnil? No iskreno rečeno si zapomni VSE, toda vi mu v novem iskanju pač poveste nove lastnosti in stvar je urejena. V makru, ki sem vam ga zapisal se recimo pobriše format (Format = False), če bi bil prej nastavljen. Ravnotako se pobišejo oz. ponovno nastavijo tudi druge lastnosti...

Če pa tega ne želite, pa morate iskanje in zamenjavo pač napisati ročno. Ti ni neke znanosti, pač morate skozi celoten tekst in iskati cifre. Ko najdete prvo cifro, pogledate naslednje 4 znake in če ustrezajo (torej cigra, cifra, podpičje, cifra, cifra) vstavite znak za novo vrstico, preskočite pet znakov in nadaljujete...
lp,
Matjaž Prtenjak
Administrator
Uros22
Prispevkov: 14
Pridružen: Če Jan 14, 2010 10:59 am

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a Uros22 »

Matjaž,

imate prav, moj razlog ni pil vode zaradi napake v makru. Da, ne odpiram nove teme imam še en izziv s katerim se ukvarjam. Uro v formatu 10:23 bi rad pogojno v Wordu pretvoril v 10.23. V koliko ":" nastopi kje drugje v tekstu ga ne zamenjaj?

Ima kdo kakšno idejo?
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a admin »

:) No saj ni neke znanosti... Torej povsem po istem postopku razmišljanja, kot je zapisno zgoraj in z uporabo nadomestnih vzorcev pridemo do sledečega:

Koda: Izberi vse

Najdi:        ([0-9][0-9]):([0-9][0-9])
Zamenjej z:   \1.\2
To je to...
lp,
Matjaž Prtenjak
Administrator
Uros22
Prispevkov: 14
Pridružen: Če Jan 14, 2010 10:59 am

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a Uros22 »

admin napisal/-a::) No saj ni neke znanosti... Torej povsem po istem postopku razmišljanja, kot je zapisno zgoraj in z uporabo nadomestnih vzorcev pridemo do sledečega:

Koda: Izberi vse

Najdi:        ([0-9][0-9]):([0-9][0-9])
Zamenjej z:   \1.\2
To je to...
Matjaž, če bi bilo življenje tako preprosto, kot vaše rešitve, znanosti ne bi potrebovali. Hvala, deluje ;)
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Word VBA - naredi odstavek pred ...

Odgovor Napisal/-a admin »

;) Hvala...

V kolikor ste zadovoljni vas prosim da razširite glas... Tako lahko vi pomagate meni (napišite kakšen komentar na http://www.matjazev.net, "polajkajte kakšno mojo stvar', povejte prijateljem in znancem, kje lahko dobijo pomoč...).

Vsak glas šteje!
Hvala
lp,
Matjaž Prtenjak
Administrator
Odgovori