Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Makro u calc-u...open office

[es] :: Office :: Makro u calc-u...open office

[ Pregleda: 2694 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

celawi
Aleksandar Obrenovic
bg

Član broj: 83708
Poruke: 164
*.rzzo.rs.

Sajt: www.restoranibeograda.com


+1 Profil

icon Makro u calc-u...open office25.12.2009. u 14:29 - pre 174 meseci
Cao,

U excelu sam imao snimljen macro koji je u odredjenim kolonama (gde se nalaze imena i prezimena), menjao vic-vić, ic-ić, dj-đ, dz-dž itd. Tako da kad se makro završi na kraju svi su imali lepo ispisana imena i prezimena. Da li znate kako da ovo uradim u Calc-u (Open office 3.0)? Probao sam da snimim makro (kao sto sam to uradio u excelu), ali mi nije poslo za rukom. Postoji opcija Autocorrect options (Tools), ali ne znam da li sa njom mogu da uradim to što hoću...
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Makro u calc-u...open office25.12.2009. u 18:06 - pre 174 meseci
Bez upotrebe makroa, može preko regularnog izraza i običnim funkcijama:
Code:
=REPLACE(A1;SEARCH("ic$";A1);2;"ić")

($ označava kraj, tako da Tickovic postaje Ticković, a ne Tićković)

Sa upotrebom makroa može da upotrebi XReplaceable interfejs, na primer:

Code:

Sub PopraviPrezime 

   oSheet = ThisComponent.getSheets().getByIndex(0)
   oRange = oSheet.getCellRangeByName("A1:A10")

   oReplaceDesc = oRange.createReplaceDescriptor() 
   oReplaceDesc.SearchString = "ic$" 
   oReplaceDesc.ReplaceString = "ić" 
   oReplaceDesc.SearchRegularExpression = TRUE

  oSheet.replaceAll( oReplaceDesc ) 

End Sub 


Dalje delovi za pretragu prezimena mogu da se ubace u niz pa da se sve odradi sa jednim deskriptorom u petlji koja prolazi kroz taj niz parova za pretragu i zamenu.

Kroz Autocorrect (automatsko ispravljanje) ovo ne može da se odradi. Prvo ovo ispravljanje se primenjuje samo u trenutku unosa, a drugo ne može da razlikuje kraj reči pa bi svako "ic" postajalo "ić".

Šta je bio problem pri snimanju makroa? Trebalo bi da se dobije makro koji sadrži .uno:ExecuteSearch poziv. Kod mene na 3.1.1 to propisno radi, mada kod nije toliko lep kao kada se ručno napiše.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

celawi
Aleksandar Obrenovic
bg

Član broj: 83708
Poruke: 164
*.rzzo.rs.

Sajt: www.restoranibeograda.com


+1 Profil

icon Re: Makro u calc-u...open office28.12.2009. u 07:53 - pre 174 meseci
Citat:
Goran Rakić: Bez upotrebe makroa, može preko regularnog izraza i običnim funkcijama:
Code:
=REPLACE(A1;SEARCH("ic$";A1);2;"ić")

($ označava kraj, tako da Tickovic postaje Ticković, a ne Tićković)

Sa upotrebom makroa može da upotrebi XReplaceable interfejs, na primer:

Code:

Sub PopraviPrezime 

   oSheet = ThisComponent.getSheets().getByIndex(0)
   oRange = oSheet.getCellRangeByName("A1:A10")

   oReplaceDesc = oRange.createReplaceDescriptor() 
   oReplaceDesc.SearchString = "ic$" 
   oReplaceDesc.ReplaceString = "ić" 
   oReplaceDesc.SearchRegularExpression = TRUE

  oSheet.replaceAll( oReplaceDesc ) 

End Sub 


Dalje delovi za pretragu prezimena mogu da se ubace u niz pa da se sve odradi sa jednim deskriptorom u petlji koja prolazi kroz taj niz parova za pretragu i zamenu.

Kroz Autocorrect (automatsko ispravljanje) ovo ne može da se odradi. Prvo ovo ispravljanje se primenjuje samo u trenutku unosa, a drugo ne može da razlikuje kraj reči pa bi svako "ic" postajalo "ić".

Šta je bio problem pri snimanju makroa? Trebalo bi da se dobije makro koji sadrži .uno:ExecuteSearch poziv. Kod mene na 3.1.1 to propisno radi, mada kod nije toliko lep kao kada se ručno napiše.


Koristim i ja 3.1.1 verziju.
Što se tiče makroa, jednostavno sam pokusao da ga snimim kao sto sam to uradio u excelu, ali mi nije poslo za rukom. Da li se na isti nacin to radi?
Kako bih mogao ovu formulu (=REPLACE(A1;SEARCH("ic$";A1);2;"ić")[/code]) da upotrebim na vise sheet-ova i vise stvari da mi menja (dj-đ; dz-dž; zivojin-živojin...) u isto vreme?
Imam preko 20 sheetova i u njima 500-600 redova sa imenima i prezimenima, pa bih hteo da to bude sto vise automatski, ako je moguće...
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Makro u calc-u...open office28.12.2009. u 21:53 - pre 174 meseci
Formula je zgodna da od jedne kolone napravi drugu kolonu (kao i bilo koja druga formula, tipa =A1*1,18 za računanje cene sa PDV-om od polja A1). Za više mogućnosti mogu se samo nadovezati formule, što može ružno da izgleda ali lepo radi:


=REPLACE(REPLACE(A1;SEARCH("ic$";A1);2;"ić");SEARCH("dz";A1);2;"dž")



Za pretvaranje sadržaja celih listova, makro je bolje rešenje. Kao i u MS Excel-u za napisanu proceduru može da se postavi dugme u paletu alatki za najlakše pokretanje ili može da se procedura dodeli nekom događaju, na primer da se pokreće pri svakom čuvanju datoteke.

Da se promeni tekst u celom listu u priloženom makrou oReplaceDesc treba napraviti nad oSheet, umesto nad oRange (uzimamo celi list, a ne potez ćelija). Za zamenu u svim listovima, potrebna je petlja koja bi pozvala getByIndex(i) u intervalu 0..20. Na primer nešto ovako (kod nije testiran):

Code:

Sub PopraviPrezime 

   Dim SearchStrings() As String
   Dim ReplaceStrings() As String

   SearchStrings(0)   = "ic$"
   ReplaceStrings(0) = "ić"
   SearchStrings(1)   = "dz"
   ReplaceStrings(1)  = "dž"
   SearchStrings(2)   = "dj"
   ReplaceStrings(2)  = "đ"

   Dim i, j
   For i = 0 To 19     ' listovi 0,1,2,...19 (20 listova)

      oSheet = ThisComponent.getSheets().getByIndex(i)
      oReplaceDesc = oSheet.createReplaceDescriptor() 
      oReplaceDesc.SearchRegularExpression = TRUE

      For j = 0 To UBound(SearchStrings)
         oReplaceDesc.SearchString = SearchStrings(j) 
         oReplaceDesc.ReplaceString = ReplaceStrings(j) 
         oSheet.replaceAll( oReplaceDesc ) 
      Next j

   Next i

End Sub 


Više o sintaksi bejzik jezika se može pronaći u zvaničnoj dokumentaciji: http://wiki.services.openoffic...wiki/Documentation/BASIC_Guide
Ovaj kod treba prekopirati kao novu proceduru u makroima dokumenta nakon čega je moguće pokrenuti je. Više o makroima i snimanju makroa http://wiki.services.openoffic...tarted/Creating_a_simple_macro

Inače snimanje makroa bi trebalo da radi kao i u MS Excelu, pokrene se snimanje, odrade se komande, zaustavi snimanje. U prozorčetu se zada ime novog makroa. Makro se može pokrenuti kroz meni „Alatke > Makroi > Pokreni makro“ (engl. Tools > Macros > Run Macro). U kom koraku nastaju problemi?

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: Office :: Makro u calc-u...open office

[ Pregleda: 2694 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.