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

#1 21. 3. 2018 07:47:53

gunmant
Člen
Registrace: 18. 1. 2017
Příspěvků: 9

Změna názvu tlačítka makrem - VYŘEŠENO

Ahoj,
jakým příkazem můžu makrem přejmenovat tlačítko v Calc, které jsem si vytvořil?
V excelu vba je to:

ActiveSheet.Shapes("Button 1").Select
    Selection.Characters.Text = "Zobrazit"

V Calc toto nefunguje.

Děkuji

Editoval gunmant (21. 3. 2018 19:23:20)

Offline

#2 21. 3. 2018 08:10:35

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,678

Re: Změna názvu tlačítka makrem - VYŘEŠENO

A - Ono by to mělo jít pokud přidáte zaklínadlo před makro VBA Support 1.
B - Na tomto fóru ale neučíme MSO potažmo VB a VBA - to si nejděte na jiném fóru.


     Podle dotazu máte opravdu zájem o programování v Libre Office, nebo Apache OpenOffice a nikoliv ve VB (VBA). Přejmenování a dokonce přetypování tlačítka samozřejmě existuje. Jenže Vy to chcete pro makro které je zřejmě VB, nebo VBA.
     V každám případě tlačítko má něco udělat a při tom se přejmenovat. Pochybuji, že by takto kompilovaný kód (StarBasic a VB) mohl fungovat bez problémů. Nicméně jednoduché věci asi ano.


     S ovládacími prvky je také možné zacházet přímo volbou z IDE. To je ale na menší manuálek. Mám 2 typy maker pro podobné účely. Flying Button a skrývání tlačítek. Takže ve druhém případě obě existují, jen se střídavě skrývají.
     První případ je specifický tím, že se umístí podle kurzoru a nastaví se mu parametry podobně jak to požadujete. Zde je možné vždy smazat a vytvořit nové, nebo jen jednoduše přepsat. Takže upřesněte co by Vám vyhovovalo více.

Editoval neutr (21. 3. 2018 08:13:18)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 21. 3. 2018 09:40:51

gunmant
Člen
Registrace: 18. 1. 2017
Příspěvků: 9

Re: Změna názvu tlačítka makrem - VYŘEŠENO

Nejedná si přímo o ovládací prvek z lišty.

Makro chci , aby mi fungovalo v LibreOffice calc.

Mám vytvořené makro, které spouštím tlačítkem a na tlačítku je text. Při spuštění makra potřebuji, aby se mi  změnil text na tomto tlačítku.
děkuji


neutr napsal(a)

A - Ono by to mělo jít pokud přidáte zaklínadlo před makro VBA Support 1.
B - Na tomto fóru ale neučíme MSO potažmo VB a VBA - to si nejděte na jiném fóru.


     Podle dotazu máte opravdu zájem o programování v Libre Office, nebo Apache OpenOffice a nikoliv ve VB (VBA). Přejmenování a dokonce přetypování tlačítka samozřejmě existuje. Jenže Vy to chcete pro makro které je zřejmě VB, nebo VBA.
     V každám případě tlačítko má něco udělat a při tom se přejmenovat. Pochybuji, že by takto kompilovaný kód (StarBasic a VB) mohl fungovat bez problémů. Nicméně jednoduché věci asi ano.


     S ovládacími prvky je také možné zacházet přímo volbou z IDE. To je ale na menší manuálek. Mám 2 typy maker pro podobné účely. Flying Button a skrývání tlačítek. Takže ve druhém případě obě existují, jen se střídavě skrývají.
     První případ je specifický tím, že se umístí podle kurzoru a nastaví se mu parametry podobně jak to požadujete. Zde je možné vždy smazat a vytvořit nové, nebo jen jednoduše přepsat. Takže upřesněte co by Vám vyhovovalo více.

Editoval gunmant (21. 3. 2018 09:49:40)

Offline

#4 21. 3. 2018 11:29:25

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,678

Re: Změna názvu tlačítka makrem - VYŘEŠENO

gunmant napsal(a)

Nejedná si přímo o ovládací prvek z lišty.


Makro chci , aby mi fungovalo v LibreOffice calc.


Mám vytvořené makro, které spouštím tlačítkem a na tlačítku je text. Při spuštění makra potřebuji, aby se mi  změnil text na tomto tlačítku.

      Takže moc moudrý z toho nejsem. Jde Vám zřejmě o tlačítko přímo v listu které se bude měnit. To má určitou problematiku, ale existují makra která se přepínají na tentýž impulz. Podobně to větvím také v tomto makru :

Sub NazevTlacitka
oPage = Thiscomponent.Sheets.getByName("List1").getDrawPage
iCount = oPage.getCount
    For i = 0 to iCount - 1
        oEle = oPage.getByIndex(i)
        oControl = oEle.getControl()
        oControl.DefaultControl = "com.sun.star.form.control.CommandButton"
        IF oControl.Label = "Start" Then
        'Sem zadat kód který se má provést pod hlavičkou START
        oControl.Label = "Stop"
        Exit Sub
        ElseIF oControl.Label = "Stop" Then
        'Sem zadat kód který se má provést pod hlavičkou STOP
        oControl.Label = "Start"
        Exit Sub
        End If
    Next i
End Sub 

     Systém na kterém jsem to stavěl a testoval je WXP, Libre Office Verze: 5.3.7.2, ID sestavení: 6b8ed514a9f8b44d37a1b96673cbbdd077e24059. Na Apache Office jsem to netestoval a ani na Linuxu.
     Samozřejmě musíte přepsat názvy které potřebujete já jsem tam uvedl klasickou změnu START/STOP. Dále musíte napojit makra která se mají spouštět. nevím zda se jedná o stejné makro které funguje jako přepínač pomocí větvení IF - či jinak, nebo rozdílná makra.
     Běžně se místo přepisu názvu využívají check boxy navzájem vyblokované, ale totéž lze docílit i jinak. Bohužel nevím podle Vašeho popisu to zřejmé není, zda tlačítko bude ovládané jen ze sešitu, nebo z nadřazených maker - MojeMakra Standard. Tam by byly potíže. V této formě to funguje pouze v konkrétním sešitě. Není uveden ani název ovládacího prvku - takže při jekékoliv shodě vznikne chyba.


     Otestujte a popřípadě upřesněte co s tím chcete dělat. Je možné že máte nějaké zkušenosti a tak když si nebudete vědět rady napište.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 21. 3. 2018 12:47:50

gunmant
Člen
Registrace: 18. 1. 2017
Příspěvků: 9

Re: Změna názvu tlačítka makrem - VYŘEŠENO

V excelu s tím nemám problém, bohužel v LibreOffice Cal to nejde.

(sestava: Verze: 5.2.4.2 (x64)
ID sestavení: 3d5603e1122f0f102b62521720ab13a38a4e0eb0
Vlákna CPU: 4; Verze OS: Windows 6.1; Vykreslování UI: výchozí;
Národní prostředí: cs-CZ (cs_CZ); Calc: CL)



Posílám screen.

Po zmáčknutí tlačítka "Ukaž smeny" se spustí makro a po ukončení makra potřebuji, aby se na tlačítku objevilo "skryj smeny"
Jedná se o jeden list.

screen.png

Offline

#6 21. 3. 2018 13:26:51

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,678

Re: Změna názvu tlačítka makrem - VYŘEŠENO

Takto nevidím jak jste makro upravil. Posílám raději originál makra v sešitě. Přejmenování tlačítka


     Nepíšete co to má udělat. Domnívám se, že se odkrývají a skrývají sloupce se směnami. Dude to zřejmě makro které se přepíná samo pomocí IF. Ale může to být řešeno samostatnými makry. Pokusím se udělat celek - i s tím skrýváním.

Editoval neutr (21. 3. 2018 13:32:08)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 21. 3. 2018 13:33:51

gunmant
Člen
Registrace: 18. 1. 2017
Příspěvků: 9

Re: Změna názvu tlačítka makrem - VYŘEŠENO

Makro funguje.

Máte pravdu, skrývá a odkrývá mi to řádky, ale to už mám hotové. Potřeboval jsem jen změnu toho tlačítka.

Jen dotaz k vašemu kódu.

Proč to máte přes ... "for i".....

Mělo by to fungovat i bez procházení?

Každopádně mockrát díky za pomoc.

neutr napsal(a)

Takto nevidím jak jste makro upravil. Posílám raději originál makra v sešitě. Přejmenování tlačítka

Editoval gunmant (21. 3. 2018 13:46:06)

Offline

#8 21. 3. 2018 13:46:59

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,678

Re: Změna názvu tlačítka makrem - VYŘEŠENO

Tak jsem na to přišel. Problém je zřejmě ve startovním názvu tlačítka. To se muselo přepsat v makru. Upravil jsem to takto :

Sub NazevTlacitka
oDoc = ThisComponent 
oSheet = oDoc.getSheets().getByName("List1")
oPage = Thiscomponent.Sheets.getByName("List1").getDrawPage
iCount = oPage.getCount
    For i = 0 to iCount - 1
        oEle = oPage.getByIndex(i)
        oControl = oEle.getControl()
        oControl.DefaultControl = "com.sun.star.form.control.CommandButton"
        IF oControl.Label = "Ukaž směny" Then
        oSheet.Columns(0).isVisible=true
        oSheet.Columns(1).isVisible=true
        oSheet.Columns(2).isVisible=true
        oControl.Label = "Skryj směny"
        Exit Sub
        ElseIF oControl.Label = "Skryj směny" Then
        oSheet.Columns(0).isVisible=False
        oSheet.Columns(1).isVisible=False
        oSheet.Columns(2).isVisible=False
        oControl.Label = "Ukaž směny"
        Exit Sub
        End If
    Next i
End Sub 

      Tedy nevím jaký nadpis obsahuje ta druhá pozice, ale když je tam 'Ukaž směny' tak ten druhý název bude 'Skryj směny'. Nyní se skrývají a odkrývají sloupce A,B,C. Snad je to dobře.

Editoval neutr (21. 3. 2018 13:47:55)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 21. 3. 2018 13:57:24

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,678

Re: Změna názvu tlačítka makrem - VYŘEŠENO

gunmant napsal(a)

Jen dotaz k vašemu kódu.


Proč to máte přes ... "for i".....


Mělo by to fungovat i bez procházení?

     Ten cyklus For i .....Next i je iterace přes tz. "DrawPage". Nyní by to nebylo potřeba, ale stačí aby přibyl nějaký ovládací prvek a bude zle. Každý list má svou "DrawPage" a na ní mohou být různé ovládací prvky. Jsou sice typované jako tlačítka, seznamy pole ap., ale já jsem uvedl jen "label" - tedy popisek prvku. Takže ten cyklus zaručuje že nevznikne chyba když by tam bylo ovládacích prvků více. Funkce getCount zjistí kolik je prvků a prohledají se na název. Jinak by se našel pouze prvek s indexem "0" a hotovo. BUď by se přepsal když by měl 'label vyjmenovaný', nebo by se nestalo vůbec nic.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí