Bold, Ialic Underline pe spatii goale.

Închis
Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Bold, Ialic Underline pe spatii goale.

Mesaj de Apostolu » Lun Ian 27, 2014 1:32 pm

Se intampla de multe ori ca documentele editate in Word 2003 sa aiba atributele de mai sus, pe spatiile goale dintre cuvinte sau dintre randuri.
Intrucat in .doc NU se vad, nu este nici o nenorocire, pana exporti in alt format.
Sau vrei sa scri exact unde a ramas un astfel de atribut. :)
Eu am exportat in html si m-am trezit cu underline pe spatii dintre randuri.

Cum putem rezolva eliminarea atributelor pe spatiile goale dintre cuvinte sau randuri ?
Ca doar .Format = False nu este suficient, la un mic macro normal de inlocuit Chr(32) cu Chr(32) :oops:

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Bold, Ialic Underline pe spatii goale.

Mesaj de Dr.Windows » Joi Mar 06, 2014 3:00 pm

Din pacate nu cred ca este posibil ce vrei tu... pentru ca nu vad care ar putea sa fie regula dupa care ai putea sa faci asta...
Asta si din cauza modului in care se aplica formatele - sa luam de ex. 2 propozitii - la una vrei sa fie formatata cu BOLD iar cealalta cu UNDELINE. Asta inseamna ca pentru prima propozitie de la primul caracter incepe formatarea cu BOLD si se termina la punct. In mod asemanator se intampla si pentru cea de-a doua cu UNDELINE.
Asta in varianta simpla... pentru ca poti fi formatari "imbricate" - nu se termina una dar incepe alta....

Oricum in cazul unul text subliniat, daca incerci sa faci ce ti-ai propus, ti-ar rezulta un text fragmentat - mai exact subliniat fiecare cuvant in parte.

Si asta se poate face cu Find & Replace daca alegi la "replace" - format / font alege "regular" pentru "Font style" iar pentru "Underline style" alege none.

Codul macro rezultat din inregistrarea operatiunilor de mai sus este urmatorul:

Cod: Selectaţi tot

Sub DeformatareSpatii()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.Font
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
    End With
    With Selection.Find
        .Text = " "
        .Replacement.Text = " "
        .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

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Bold, Ialic Underline pe spatii goale.

Mesaj de Apostolu » Joi Mar 06, 2014 6:14 pm

Se pare ca n-am stiut sa explic cum trebuie.
NU are nici un fel de importanta ce se intampla stanga-dreapta unui "space", la mijlocul unui rand.
Acesta nu trebuie sa fie boldat, italic sau underline.
Idem pentru un rand gol intre doua randuri ce contin caractere.
Ce nu inteleg eu, este cum se aplica atributele de bold, italic sau underline la un rand gol.
Pentru ca din cate am vazut, un rand gol inseamna doua ^p sau doua ^13. Deci nu exista niciun "space" (Chr32)
Atributele in cauza nu se vad in Word, dar eu export din .doc in html si acolo apar !!!!

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Bold, Ialic Underline pe spatii goale.

Mesaj de Dr.Windows » Sâm Mar 08, 2014 10:48 am

Apostolu scrie:Ce nu inteleg eu, este cum se aplica atributele de bold, italic sau underline la un rand gol.
Probabil Word aplica formatarea de genul asta

Cod: Selectaţi tot

<b><p>Text</p>
</p>
</b>
Si in cazul asta trebuie sa cauti finaul de paragraph si sa-l inclocuiesti cu un alt paragraph "neformatat" care s-ar puteaa sa aibe un format de genul

Cod: Selectaţi tot

<b><p>Text</p></b>
</p>

Dupa aceeasi schema prezentata pentru spatiu poti incerca sa cauti paragrafe si sa le "deformatezi". Cu VBA ar fi ceva de genul asta:

Cod: Selectaţi tot

Sub DeformatareParagrafe()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find.Replacement.Font
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
    End With
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = "^p"
        .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
Si vezi daca acum am inteles eu ce vroiai sa faci...

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Bold, Ialic Underline pe spatii goale.

Mesaj de Apostolu » Sâm Mar 08, 2014 2:02 pm

Incerc azi si zic cum functioneaza !

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Bold, Ialic Underline pe spatii goale.

Mesaj de Apostolu » Sâm Mar 08, 2014 6:33 pm

Functioneaza.
Multumesc mult !

Închis

Înapoi la “Visual Basic for Application (VBA) - Intrebari tehnice”