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ů: 3,435

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)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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ů: 3,435

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.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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ů: 3,435

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)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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ů: 3,435

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)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení 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ů: 3,435

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.


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

Offline

Zápatí