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

#1 15. 3. 2012 17:19:32

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Převod VBA do Calcu - VYŘEŠENO

Byl by tu někdo schopný, kdo by byl ochotný přepsat makro z excelu, aby fungovalo v Open Office? Moc děkuji...

ActiveSheet.Copy After:=ActiveSheet
     ActiveSheet.Select
  pčr = Range("z3") + 1
              Range("z3") = pčr
     ActiveSheet.Name = pčr

Offline

#2 15. 3. 2012 18:39:08

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

Vítejte na fóru,


převod by neměl být tak složitý, ale nejsem v VBA vůbec zběhlý. Bude lepší, když napíšete co makro má provést. Takto jen odhaduji, že se má nakopírovat aktivní list a vložit jej za něj, pak jej pojmenovat podle hodnoty v buňce Z3 zvýšenou o 1?


Je to tak?


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 15. 3. 2012 18:45:41

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Ano,
buňka z3 se zvětší o 1, vytvoří se list (stejný), ale s názvem co je v z3.
Díky smile

Offline

#4 15. 3. 2012 19:46:33

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

Šlo by to takto:

sub zkopirovat_list
list = thisComponent.CurrentController.ActiveSheet
listy = thisComponent.sheets
z3 = list.getCellrangeByName("Z3")
z3.value = z3.value + 1
listy.CopyByName(list.name,z3.value,sheet+1)
end sub

Má to jednu nevýhodu, vkládá zkopírovaný list na pevnou pozici (zde druhou). Má se kopírovat z aktivního listu - má takto pracovat v kterémkoli listu sešitu?


Po pravdě nevím jakým způsobem se dá zjistit pořadí listu (jakou metodou) jinak než cyklem, proto jsem to zatím napsal s vkládáním napevno, třeba někdo ví a poradí.


Makro si ozkoušejte


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 15. 3. 2012 19:51:34

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Má to fungovat tak, že to vytvoří nový list (fakturu). A z té nové se také bude dělat další. Ale jestli nevíš, nevadí, tohle je super smile

Offline

#6 15. 3. 2012 21:05:05

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

Předpokládám, že se nový list tvoří z jedné "šablony". Pokud má tato šablona stálé - nepohyblivé umístění, stačí zjistit její pořadí a může se nový list adresovat přímo. Například tato šablona je v sešitu jako třetí list (i včetně skrytých listů) pak si upravte makro:

listy.CopyByName(list.name,z3.value,3)

Tato úprava vloží nový list jako 4 (číslování začíná 0)

Pokud má  být nový list umístěn na poslední pozici pak stačí úprava takto

listy.CopyByName(list.name,z3.value,listy.count)

Je možné i pevné pořadí odzadu

listy.CopyByName(list.name,z3.value,listy.count - 1)

takto bude vkládáno jako předposlední atd.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 15. 3. 2012 21:25:20

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Každý nový list se vždy vytvoří s předešlého, který se uložil na konci. Eště se v tom pohrabu : ))

Offline

#8 16. 3. 2012 09:37:23

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

sedlacekdan napsal(a)

Pokud má  být nový list umístěn na poslední pozici pak stačí úprava takto

listy.CopyByName(list.name,z3.value,listy.count)

tak tato změna.

;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 18. 3. 2012 14:41:48

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Funguje to skvěle! Ešte pokud bych mohl se zeptat, pokud si vytvořím nový list, tak se změní buňka z3 + 1, ale změní se i v ostatních listech, což je už nežádoucí. Nelze toto také opravit? smile

Offline

#10 18. 3. 2012 15:30:47

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

jilke napsal(a)

pokud si vytvořím nový list, tak se změní buňka z3 + 1, ale změní se i v ostatních listech, což je už nežádoucí. Nelze toto také opravit?

Tak tomu nerozumím, při testování se mi mění hodnota Z3 pouze v aktuálním listu, v ostatních zůstává původní hodnota, tedy pokud začnu číslem 1, tak se mi postupně přidají další listy se stejným názvem jako je v jejich buňce Z3.


Mění se pouze jedna jediná buňka v sešitu.


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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

#11 18. 3. 2012 16:39:22

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Tak to je zvláštní, opravdu se mi zvětšuje buňka Z3 i v neaktivních listech. Nemůžete mi pro kontrolu zaslat kód makra?

Offline

#12 18. 3. 2012 17:51:37

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Převod VBA do Calcu - VYŘEŠENO

sub zkopirovat_list
list = thisComponent.CurrentController.ActiveSheet
listy = thisComponent.sheets
z3 = list.getCellrangeByName("Z3")
z3.value = z3.value + 1
listy.CopyByName(list.name,z3.value,listy.count)
end sub

Toto makro navýší hodnotu buňky Z3 o 1 a poté zkopíruje list. To je možná to nežádoucí chování, Z3 se navýší v původním listu (faktuře) vždy při vytváření nové.
Zkuste následující úpravu:

sub zkopirovat_list
list = thisComponent.CurrentController.ActiveSheet
listy = thisComponent.sheets
z3 = list.getCellrangeByName("Z3")
listy.CopyByName(list.name,z3.value+1,listy.count)
ThisComponent.CurrentController.setActiveSheet(listy.GetByName(Z3.value+1)
list = thisComponent.CurrentController.ActiveSheet
z3 = list.getCellrangeByName("Z3")
z3.value = z3.value + 1
end sub

Po této úpravě se zkopíruje aktuální list a pojmenuje podle buňky Z3 + 1 aniž  by se hodnota buňky změnila. K navýšení buňky Z3 se provede teprve v nově vytvořené buňce.



;o)

Editoval sedlacekdan (18. 3. 2012 18:16:18)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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

#13 18. 3. 2012 19:43:41

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Tak to je naprosto super! Díky za pomoc smile)



_______________________________________________________

Značím jako vyřešené

;o)

Editoval sedlacekdan (18. 3. 2012 20:01:54)

Offline

#14 9. 4. 2012 18:40:01

jilke
Člen
Registrace: 15. 3. 2012
Příspěvků: 8

Re: Převod VBA do Calcu - VYŘEŠENO

Eště jeden malý dotaz - v tom dokumentu mám nějaké vzorečky a makra. A když ten list zamknu, tak mi to hodí chybu " zamknuté buňky nelze měnit". Ovšem buňky, ve kterých je nějaký vzoreček nebo se mění, či je používají makra(při tom to hodí chybu)jsou odemknuté. Tak jsem z toho jelen. Kde může být chyba?

-Vyřešeno

Editoval jilke (9. 4. 2012 19:48:07)

Offline

Zápatí