Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 24. 3. 2010 08:40:57

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Fce. na zjištění formátu (stylu) buňky

Ahojte,
mám dva Calc soubory a mám je navzájem propojené. V jedné buňce jednoho souboru se mi objevují čísla z druhého souboru(v tomto souboru jsou ve sloupci a propojení je pomocí vlookup). Ovšem bylo by také dobré kdybych věděl jakou barvu má bunka v zdrojovém souboru. Nebo aspoň jaký má styl.
Zkoušel jsem něco s fcí. =CELL("InfoType"; Odkaz) ovšem ta mi řekne maximálně to jestli je text(ne číslo) zarovnaný vpravo/vlevo...(InfoType=PREFIX) nebo kolik má číslo desetinných míst jestli je v % (InfoType=FORMAT) ....ale o barvě nebo stylu nikde nic... :-(

tak diky za napady.


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#2 26. 3. 2010 00:08:31

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Fce. na zjištění formátu (stylu) buňky

Tohle se tu už jednou řešilo ne? A myslím, že nevyřešilo :-) tj. odpovídající standardní funkce neexistuje. Je tedy nutné pohledat na netu, nebo si naprogramovat svoji.

Offline

#3 26. 3. 2010 00:55:22

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Fce. na zjištění formátu (stylu) buňky

Function cellstyle(list as Integer, radek as Long, sloupec as Integer) as String

    oDokument = ThisComponent
    oList = oDokument.sheets(list-1)
    oBunka =  oList.getcellbyposition(sloupec-1, radek-1)
    cellstyle = oDokument.StyleFamilies("CellStyles").getByName(oBunka.CellStyle).DisplayName

End Function

Funkce se zapisuje

=CELLSTYLE(číslo_listu;řádek;sloupec)

tj. pro buňku B3 v aktuálním listu

=CELLSTYLE(SHEET();3;2)

Hloupé je, že se po změně stylu neprovede přepočet té funkce. Nevím, jak toho docílit- teda kromě přidání/odebrání listu nebo otevření sešitu :-) Takových hezkých logických záležitostí je v OOo hafo - už abych uměl programovat v tom, v čem je OOo napsáno :-D

Editoval hanus (26. 3. 2010 01:02:11)

Offline

#4 26. 3. 2010 08:04:15

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Fce. na zjištění formátu (stylu) buňky

diky,jdu to prokoumat
...tyjo, kam mam napsat "Function cellstyle(list as Integer, radek as Long....." ? vsak to neni makro...

Editoval dech (26. 3. 2010 08:10:23)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#5 26. 3. 2010 08:27:46

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Fce. na zjištění formátu (stylu) buňky

Je to makro "typu" funkce, normálně do modulu (Sub je makro "typu" procedura).
Název ve Funcion se pak použije v listu jako =NAZEV_FUNKCE(...)

Offline

#6 26. 3. 2010 15:04:41

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Fce. na zjištění formátu (stylu) buňky

hanus napsal(a)

Hloupé je, že se po změně stylu neprovede přepočet té funkce. Nevím, jak toho docílit- teda kromě přidání/odebrání listu nebo otevření sešitu :-) Takových hezkých logických záležitostí je v OOo hafo - už abych uměl programovat v tom, v čem je OOo napsáno :-D

Tady je snadná pomoc. Třeba:

=CELLSTYLE(SHEET();3;2)&T(NOW())

Offline

#7 26. 3. 2010 15:51:43

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Fce. na zjištění formátu (stylu) buňky

tyjo...funguje!:)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#8 26. 3. 2010 16:54:35

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: Fce. na zjištění formátu (stylu) buňky

prominte ze se furt ptam.....tak tedy ta funkce funguje! Ovsem v jednom souboru,lze to udelat nejak abych mohl cist i bunky z jineho souboru?
Bude se muset asi neco zmenit v tomto radku toho makra-funkce  "oDokument = ThisComponent" ...ale jak. Už jsem to"thisdocument" zkoušel nahradit cestou na soubor na počítači:
oDokument = C:\Users\Honza\Desktop\test.ods   a udělá to chybu: "neočekávaný symbol: /" (zkoušel jsem i opačné lomítko)...a různé variace zadání té adresy,ale furt chyby s tím lomítkem.


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#9 26. 3. 2010 17:20:23

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Fce. na zjištění formátu (stylu) buňky

No ono by to celkově chtělo upravit na =CELLSTYLE(odkaz) aby nebylo potřeba určovat list, řádek a sloupec. Zbývá jen detail - vědět jak v tom makru/funkci načíst vstupní parametr tak, aby ho vzal jako objekt (buňku se všemi jejími vlastnostmi) a nikoliv jako výsledné hodnoty :-)
Až někdo budete vědět, rád se přiučím.

Offline

#10 26. 3. 2010 17:47:11

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Fce. na zjištění formátu (stylu) buňky

To je peklo, zadám do Googlu "openoffice function style code" a vyhodí mi to na prvním místě link na tohle vlákno :-) to už je fakt krize...

Offline

#11 27. 3. 2010 07:59:12

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Fce. na zjištění formátu (stylu) buňky

dech napsal(a)

Už jsem to"thisdocument" zkoušel nahradit cestou na soubor na počítači:
oDokument = C:\Users\Honza\Desktop\test.ods   a udělá to chybu: "neočekávaný symbol: /" (zkoušel jsem i opačné lomítko)...a různé variace zadání té adresy,ale furt chyby s tím lomítkem.

Tadiaľto cesta nevedie, musíte ten druhý súbor otvoriť, vybrať štýl a zatvoriť ten druhý súbor:

function CellStyle(Subor as string, Adresa as string)
 dim oUrl, List, Bunka as string
 dim oPropertyValue as new com.sun.star.beans.PropertyValue
 dim oZosit, oList, oBunka
 dim bodka
 
 List="List1" ' Ak v adrese nie je názov listu, dáme List1
 Bunka=Adresa
 bodka=instr(riadok,".")
 if bodka<>0 then ' Ak je v adrese bodka, čiže je tam názov listu
  List=trim(left(Adresa,bodka-1)) ' Pred bodkou je názov listu
  Bunka=trim(right(Adresa,len(Adresa)-bodka)) ' Za bodkou je názov bunky
 end if
 
 oUrl = convertToUrl(Subor)
 oPropertyValue.Name = "Hidden" ' Súbor otvoríme "neviditeľne"
 oPropertyValue.Value = true
 oZosit = starDeskTop.loadComponentFromURL(oUrl, "_blank", 0, Array(oPropertyValue ))
 
 oList=oZosit.Sheets.getByName(List)
 oBunka=oList.getCellRangeByName(Bunka) 
 CellStyle=oZosit.StyleFamilies("CellStyles").getByName(oBunka.CellStyle).DisplayName
 oZosit.close(true) ' Zatvorenie súboru
End Function

Voláte to:

=CELLSTYLE("C:\Moje dokumenty\ppp.ods"; "List1.A1")&T(NOW())

Editoval j-pastierik (27. 3. 2010 08:02:30)

Offline

Zápatí