Barva ozadja in obrobe

Pomoč pri delu z MS Wordom
Odgovori
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Pozdravljeni!

S programom MyHeritage Family Tree Buildem 'obdelujem' družinsko drevo.

Program lahko izdela vrsto različnih izpisov v različnih jezikih, ki jih shrani v RTF obliki in jih enostavno odprem z word 2010.

Program za vsako generacijo glede na jezik izpiše npr. '1. Generacije' ali '1st Generation' ali 'Erste Generation' in tako dalje za toliko generacij kot jih imam vpisanih ter na koncu še 'Zabeležke' ali 'Notes' ali 'Anmerkungen'.

Težave je ta, da ima vsak tak zapis

1. ozadje (background) barvo sivo, torej ni brezbarvno in
2. vse 4 obrobe

Z ročnim posegom lahko odstranim barvo in obrobe, toda teh izpisov je več kot 50 s povprečno 15 generacijami. Ogromno rokodelsko delo, časovno dolgotrajno, pa še kaj izpustim.

Prilagam tudi izpise v treh jezikih. Prvo generacijo sem popravil tako kot bi jo želel videti, predvsem na papirju (varčevanje tonerja!). Ostale generacije in opombe so v izvirn obliki.

Ali je možno poenostaviti postopek npr. z ustreznim makrojem?

Hvala za odgovor in rešitev,
Mladen

Slika

Slika

Slika
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a admin »

Pozdravljeni,

Za rešitev tega problema imate dve možnosti, izmed katerih prva ni nujno mogoča.

Prva - lažja, a malovrjetna - pot, je da spremenite stil. Vsak element v Word-u lahko ima nek stil, ki določa vse elemente (kot so barva, ozadje, velikost črk...) in če spremenite stil, se spremenijo vsi elementi, ki so od njega odvisni. Vendar pa je težava v tem, da je malovrjetno, da bi vaš dokument, torej dokument, ki je shranjen kot RTF imel stile.

Druga - težja, a zagotovo delujoča -pot, pa je, kot ste napisali tudi sami - ustrezen makro. Vendar pa to ne more biti kar ne splošen makro, ki bi vse to naredil, temveč je potrebno makro napisati tčno na podlagi takšnega dokumenta. Torej je potrebno vzeti dokument in videti, kako je zgrajen, ter napisati makro. Slednji pa potem seveda takšno nalogo reši v sekundi ali dveh.
lp,
Matjaž Prtenjak
Administrator
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Hvala za odgovor.

Bom poskusil s vašim prvim predlogom.

Morda sem bil pri opisu problema premalo natančen. Tisto RTF datoteko shranim kot DOCX, jo obdelam kot DOCX in na koncu shranim kot PDF.
Na ta način dosežem vsaj majhno zaščito, da mi žlahta ne spreminja izpise.

Lp Mladen
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a admin »

Pozdravljeni,

Ne, ne; jaz sem vas že razumel pravilno, ne vem pa če ste vi razumeli, kaj vam želim povedati s prvo možnostjo. Slogi morajo namreč že obstajati, sicer je brezveze. Ni torej pomembno v kakšno obliko vi pretvorite dokument, temveč v kakšni obliki ga dobite.

Če je v vašem izvornem dokumentu (RTF), kar je malo vrjetno in niti ne vem ali RTF to sploh podpira, definiran slog npr. Naslov (Caption) in je slednji pač uporabljen za naslove, potem lahko takšen slog pač spremenite, da ustreza vašim potrebam. Če tega sloga ni definiranega potem si s slogi ne morete pomagati popolnoma nič.

No sicer pa obstaja še tretja možnost - spregledal sem namreč, da je tekst konstanten! - torej uporabite laho orodje Najdi in zamenjaj in wordu zaukažete naj zamenja besedilo '2. genaracije (otroci)' z besedilom '2. genaracije (otroci)', ki pa naj ima drugačno obliko. Vse to lahko nastavite v pogovornem oknu Najdi/Zamenjaj.
lp,
Matjaž Prtenjak
Administrator
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Pozdravljeni!
Važno je, da se razumeva. Obojestransko.

Tista barva ozadja in okvir nista določena kot slog. Ko postavim utripača na tisto besedo 'generacija' mi pokaže 'Navaden slog', kar po mojem pomeni, da sta bili barva ozadja in obrobe dodane posebej.

Tisto 'Najdi in zamenjaj' je možno. Ali lahko potem to shranim kot nekakšen makro za naslednje zamenjave?

Vedno bolj se nagibam k tistemu predlogu št. 2 v vašem prvem priporočilu za izdelavo makroja.

V vseh treh jezikih je skupen niz znakov Genera kar bi uporabil za iskanje, potem pa celi vrstici brisal barvo ozadja in obrobe.

Kaj pravite na to mojo idejo?

LP Mladen
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a admin »

RTM napisal/-a: Tista barva ozadja in okvir nista določena kot slog. Ko postavim utripača na tisto besedo 'generacija' mi pokaže 'Navaden slog', kar po mojem pomeni, da sta bili barva ozadja in obrobe dodane posebej.
Točno tako, kot sem predvideval.
RTM napisal/-a:Tisto 'Najdi in zamenjaj' je možno. Ali lahko potem to shranim kot nekakšen makro za naslednje zamenjave?
Da, vse kar počnete lahko posnamete kot makro.
RTM napisal/-a:Kaj pravite na to mojo idejo?
Ideja je čisto OK, a vse je odvisno od tega, kako boste to idejo realizirali.
lp,
Matjaž Prtenjak
Administrator
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Pozdravljeni!

Uspelo mi je posneti makro1 najdi/zamenjaj toda nikjer ni možnost spreminjaja barve ozadja in brisanje okvirja. Tista zamenjava General v Ggeeneral je zgolj zato, da vidim, če deluje od začetka do konca dokumenta.

Koda: Izberi vse

Sub Makro1()
'
' Makro1 Makro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.ParagraphFormat
        .SpaceBeforeAuto = False
        .SpaceAfterAuto = False
    End With
    With Selection.Find
        .Text = "Generac"
        .Replacement.Text = "Ggeenerac"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Potem sem posnel makro2. Z običajnimi ukazi na traku sem odstranil barvo ozadja in okvir. To deluje le tako, da moram utripača vedno postaviti na ustrezno mesto.

Koda: Izberi vse

Sub Makro2()
'
' Makro2 Makro
'
'
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
    Selection.Shading.Texture = wdTextureNone
    Selection.Shading.ForegroundPatternColor = wdColorAutomatic
    Selection.Shading.BackgroundPatternColor = wdColorAutomatic
End Sub
Težava je, da kjub različnim poskusum ne znam nekako vključiti makro2 v makro1.

Kakšen bi bil ukaz v macro1

With Selection.Find
.Text = "Generac"

ko bi poleg besedila "Generac" iskali tudi "Zabeležke" ?

Na pomoč, prosim.
Mladen
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a admin »

Pozdravljeni,

V oknu Najdi/Zamenjaj lahko med drugim iščete tudi po različnih lastnostih teksta in to je tisto, kar sem vam predlagal!. Pozabite torej trenutno na makre - te boste posneli ko boste znali akcijo izvesti ročno.

V oknu najdi in zamenjaj torej vpišite, naj najde besedilo (npr. 'Notes'), vendar takšno, ki ima obarvano ozadje in ga zamenja z besedilo 'Notes', ki nima obarvanega ozadja. Vse omenjeno nastavljate v okni Najdi/Zamenjaj in sicer tako da spodaj desno kliknete gumb 'Več >>' in okno se poveča ter vam prikaže možnosti, kjer lahko urejate različne lastnosti teksta. Iščete lahko torej besedilo, ki ima ozadje. Vendar pa morate pri tem to ozadje tudi natančno določiti! Zelo natančno morate namreč pogledati kako je to ozadje določeno in potem v oknu za iskanje najti natančno takšnega.

Ali pa da v oknu za iskanje določite, da iščete celoten odstavek (npr. 'Notes') in ga potem spet zamenjate s celotnim odstavkom 'Notes', ki pa je tokrat brez ozadja. Za te primere ima Word posebne znake v iskalnih poljih in za odstavek je to znak ^p. Tudi to vseh omenjenih znakov pridete preko okna tako da kliknete gumb 'Posebno'.
lp,
Matjaž Prtenjak
Administrator
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Pozdravljeni!

Naredil sem makro, ki naredi skoraj vse!

Imam pa težavo, da mi nikakor ne uspe dodati ukazov za brisanje barve ozadja (siva). Ustrezne ukaza sem posnel pri ročnem brisanju, naprej pa ne znam.

To je makro, ki deluje tako, da iskano besedilo umesti na sredino:

Koda: Izberi vse

Sub Sredina()
'
' Sredina Makro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.ParagraphFormat
        .SpaceBeforeAuto = False
        .SpaceAfterAuto = False
        .Alignment = wdAlignParagraphCenter
    End With
    With Selection.Find
        .Text = "Generaci"
        .Replacement.Text = "Generaci"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceAll
    ActiveWindow.ActivePane.LargeScroll Down:=6
    Selection.Find.ClearFormatting
    Selection.Find.Font.Italic = True
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.ParagraphFormat
        .SpaceBeforeAuto = False
        .SpaceAfterAuto = False
        .Alignment = wdAlignParagraphCenter
    End With
    With Selection.Find
        .Text = "Zabelež"
        .Replacement.Text = "Zabelež"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.HomeKey Unit:=wdStory
End Sub
To pa so ukazi, ki odstranijo barvo ozadja:

Koda: Izberi vse

Sub Makro1()
' Makro1 Makro
    Selection.Shading.Texture = wdTextureNone
    Selection.Shading.ForegroundPatternColor = wdColorAutomatic
    Selection.Shading.BackgroundPatternColor = wdColorAutomatic
End Sub
Te 3 vrstice sem dodajal na različna mesta v tisti makro 'Sredina' in tudi odstranjeval različne dele ukaza (npr. Selection ali Shading itd.) - vse neuspešno.

Prosim za pomoč, namig, nasvet ali celo rešitev te težave. Hvala
lp mladen

Ps. Kot pripomko sem želel dodati tudi wordov docx, približno 7 strani, ampak kaže, da te pravice nimam. :(
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a admin »

Pozdravljeni,

Datotek ne morete pripenjati, saj se je to že izrodilo v pripenjanje datotek in zastonj programiranje, tako da sem pripenjanje datotek onemogočil.

Kar pa se tiče vaše pripete kode sam vam do popravil, ker tako kot ste se tega lotili vi bi težko prišli do rešitve. Prilagam kodo, ki je nadgradnja vaše in služi za iskanje enega niza, za iskanje preostalih nizev pa morate pač večkrat skopirati vso obstoječo kodo ali pa napisati podprogram:

Koda: Izberi vse

Sub NaSredinoInPocisceno()
  Selection.HomeKey Unit:=wdStory
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find.Replacement.ParagraphFormat
      .SpaceBeforeAuto = False
      .SpaceAfterAuto = False
      .Alignment = wdAlignParagraphCenter
  End With
  With Selection.Find
      .Text = "Generaci"
      .Replacement.Text = "Generaci"
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  
  With Selection
    While (.Find.Execute(Replace:=wdReplaceOne))
      .StartOf Unit:=wdParagraph
      .MoveEnd Unit:=wdParagraph
      
      .Shading.Texture = wdTextureNone
      .Shading.ForegroundPatternColor = wdColorAutomatic
      .Shading.BackgroundPatternColor = wdColorAutomatic
      
      .Move Unit:=wdParagraph
    Wend
  End With
End Sub
lp,
Matjaž Prtenjak
Administrator
RTM
Prispevkov: 39
Pridružen: Po Mar 16, 2015 4:29 pm

Re: Barva ozadja in obrobe

Odgovor Napisal/-a RTM »

Najlepša hvala za vaš trud!
Lp Mladen
Odgovori