Macro inlocuire siruri

Închis
ccirtina
Mesaje: 280
Membru din: Lun Oct 11, 2010 9:49 pm
Localitate: Craiova

Macro inlocuire siruri

Mesaj de ccirtina » Mar Oct 12, 2010 10:38 pm

Am un paragraf care este variabil, textul variaza de la caz la caz,
ex:
Catre SC gugon SRL , cu sediul in ...
sau
Impreuna cu SC Monis com SRL si altele vom face ....,
dupa cum se observa SC si SRL sunt constante restul se schimba.
Intrebare:
Cum fac replace textului dintre SC si SRL?
Multumesc.

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

Re: Macro inlocuire siruri

Mesaj de Dr.Windows » Mie Oct 13, 2010 9:26 am

Poti incerca urmatorul macro:

Cod: Selectaţi tot

Sub InlocuireSocietate()
    With ActiveDocument.Range.Find
        .ClearFormatting
        .MatchWildcards = True
        .Text = "<(SC) * (SRL)>"
        .Replacement.Text = "SC ITLearning SRL"
        .Execute Replace:=wdReplaceAll
    End With
End Sub

ccirtina
Mesaje: 280
Membru din: Lun Oct 11, 2010 9:49 pm
Localitate: Craiova

Re: Macro inlocuire siruri

Mesaj de ccirtina » Mie Oct 13, 2010 4:11 pm

Mii de multumiri.
Nu am cuvinte sa-mi exprim bucuria.

ccirtina
Mesaje: 280
Membru din: Lun Oct 11, 2010 9:49 pm
Localitate: Craiova

Re: Macro inlocuire siruri

Mesaj de ccirtina » Mar Mai 24, 2011 5:37 pm

In acest caz se va selecta inclusiv SC si SRL.
Exista posibilitatea ca acestea sa fie ignorate si sa se selecteze doar continutul sirului dintre ele?

ccirtina
Mesaje: 280
Membru din: Lun Oct 11, 2010 9:49 pm
Localitate: Craiova

Re: Macro inlocuire siruri

Mesaj de ccirtina » Mar Mai 24, 2011 5:54 pm

Am facut o combinatie cu procedura de mai sus si a iesit asta:

Cod: Selectaţi tot

Public Function SAtext5()
Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "SC"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "<*(SRL)>"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.MoveLeft Unit:=wdCharacter, Count:=4, Extend:=wdExtend
End Function
Ceva mai simplu este?

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

Re: Macro inlocuire siruri

Mesaj de Dr.Windows » Mar Mai 24, 2011 9:06 pm

ccirtina scrie:Ceva mai simplu este?
Da... exemplul initial... :lol:
Ce te impiedica sa inlocuiesti numele firmei cu tot cu SC si SRL?... chiar daca mai trebuie pus si prefixul SC si sufixul SRL?...

smcsa
Mesaje: 2805
Membru din: Mar Sep 29, 2009 7:29 pm
Localitate: Timisoara

Re: Macro inlocuire siruri

Mesaj de smcsa » Mie Mai 25, 2011 7:00 am

Si atata timp cat inlocuirea o face un macro, nu un om, ce importanta are ca e mai simplu sau mai complicat ? Diferenta in timp de executie intre cele 2 variante este nesemnificativa.

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

Re: Macro inlocuire siruri

Mesaj de Dr.Windows » Mie Mai 25, 2011 7:52 am

Corect smcsa- atata timp cat operatiunea este automatizata conteaza mai putin daca exista "ceva mai simplu"... ci doar sa rezolve problema intr-un timp "rezonabil" dar si codul sa fie usor de intretinut.

@ccirtina, din acest motiv "ceva mai simplu" depinde foare mult si din ce punct de vedere privesti:
- eu l-am privit doar din prisma "lungimii codului" pentru ca daca este prea "lung" atunci te poti incurca in el in momentul in care vrei sa mai modifici ceva
- un alt punct de vedere poate fi cel al vitezei de executie dar cum a mentionat si smcsa diferenta de viteza nu este semnificativa decat daca faci 1.000.000 de inlocuiri intr-un text dar altfel nu cred ca are rost sa te chinui... ambele coduri sunt bune daca iti rezolva problema (chiar daca al tau este putin "mai lung").

smcsa
Mesaje: 2805
Membru din: Mar Sep 29, 2009 7:29 pm
Localitate: Timisoara

Re: Macro inlocuire siruri

Mesaj de smcsa » Mie Mai 25, 2011 8:38 am

Acum, mai poate interveni Ego-ul programatorului :) Oricum, fiind VBA, l-am mutat la sectiunea corespunzatoare

ccirtina
Mesaje: 280
Membru din: Lun Oct 11, 2010 9:49 pm
Localitate: Craiova

Re: Macro inlocuire siruri

Mesaj de ccirtina » Mie Mai 25, 2011 3:57 pm

lucian scrie:Corect smcsa- atata timp cat operatiunea este automatizata conteaza mai putin daca exista "ceva mai simplu"... ci doar sa rezolve problema intr-un timp "rezonabil" dar si codul sa fie usor de intretinut.

@ccirtina, din acest motiv "ceva mai simplu" depinde foare mult si din ce punct de vedere privesti:
- eu l-am privit doar din prisma "lungimii codului" pentru ca daca este prea "lung" atunci te poti incurca in el in momentul in care vrei sa mai modifici ceva
- un alt punct de vedere poate fi cel al vitezei de executie dar cum a mentionat si smcsa diferenta de viteza nu este semnificativa decat daca faci 1.000.000 de inlocuiri intr-un text dar altfel nu cred ca are rost sa te chinui... ambele coduri sunt bune daca iti rezolva problema (chiar daca al tau este putin "mai lung").
Si eu tot din punct de vedere al lungimii ma gandeam, pentru ca in momentul in care le voi combina lungimea codului va fi foarte mare, am reusit sa le mai compresez un pic si parca este ceva mai descurcat(am facut sectiuni de coduri pe care le-am inlocuit, cam asa: Application.Run MacroName:="c1", Application.Run MacroName:="c2", etc..)
Va multumesc pentru ajutor.

Închis

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