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

#1 2. 11. 2012 09:46:51

Gooorila
Člen
Registrace: 4. 10. 2009
Příspěvků: 43

Název listu po kopírování dle hodnoty pole - VYŘEŠENO

Dobrý den
Pracuji vždy s několika listy v rámci jednoho sešitu a to tak, že šablona má vždy jeden list, vyplním prvky formuláře a list nakopíruji. V nakopírovaném listu již měním prvky formuláře, které se mění. Lze nějak nastavit, aby se název kopírovaného listu pojmenoval dle konkrétního pole v listu?

Nyní mám list1 a po nakopírování se nový list jmenuje list1_1 a další se jmenuje list1_1_1. Já mám v listu pole s výrobním číslem a potřebuji, aby se po nakopírování list jmenoval právě dle výrobního čísla. Pořád to přepisuji ručně, ale těch listů vytvářím velké množství, takže kdyby to šlo zautomatizovat, pomohlo by mi to. Děkuji.


______________________________________________

Značím jako vyřešené

;o)

Offline

#2 2. 11. 2012 11:41:10

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

Re: Název listu po kopírování dle hodnoty pole - VYŘEŠENO

'Zkuste si přizpůsobit tahle 2 makra: (celý tenhle text si můžete nakopírovat přímo do editoru.)

Sub NovySesit 'Chodí ale není to přesně ono.
oDoc = StarDesktop. loadComponentFromURL ( "private:factory/scalc" , "_blank" , 0 , Array ( ) ) 
end Sub

'Nebo tohle: Ale musíte vymyslet, deklarovat a zadat do makra podle pole, kterého se to má vyplnit.

Sub NovyList ' s uvozovkami ("") na první místo s číslem pořadí od nuly
Dim Nazev =........(nejspíš buňka).String
oSheet = thisComponent.getSheets.insertNewByName ( "Nazev" , "" ) 'Nebo místo uvozovek číslo listu ap
End Sub

Teda já si myslím, že by to spíš chtělo makro na Save as, ale chtěl jste list, a save as by byl sešit.
'Samozřejmě je potřeba ještě iterátor, který bude přepínat buňku "Názvu", nebo také přidávat číslo ke stejnému '"Názvu". Dál samozřejmě ovládací prvek Tlačítko, nebo vybírací seznam ap. V případě nouze dejte ukázku na web.

Editoval neutr (2. 11. 2012 12:00:43)


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 2. 11. 2012 18:46:58

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

Re: Název listu po kopírování dle hodnoty pole - VYŘEŠENO

Jedině makrem, pokud kopírujete vždy z jednoho listu (stálého) tak lze propojit prvek s buňkou a název listu si brát odtud. Pokud se kopíruje vždy jiný list (například vždy ten poslední) tak si makro musí vzít název přímo z formulářového prvku.

Sub kopiruj_list
on error goto hlaska
doc = ThisComponent
listy = doc.sheets
aktivni = doc.currentController.Activesheet
jmeno_listu = aktivni.name
prvky = aktivni.Drawpage.Forms
for i = 0 to prvky.count - 1 
 prvek = prvky.getByIndex(i)
  if prvek.hasByName("výrobní číslo") then
   objekt = prvek.getByName("výrobní číslo") 
  endif
next i
nazev_listu = objekt.text
listy.copyByName(jmeno_listu, nazev_listu, listy.count)
hlaska:
msgbox "List s tímto názvem již existuje",0,"!!! CHYBA !!!"
end sub

Toto makro zkpíruje list a vloží jej na konec sešitu. Zkopírovaný list je pojmenovaný podle hodnoty ve formulářovém prvku, který musí být nazvaný výrobní číslo.


Většina toho je popsána v tomto seriálu Malá makra


;o)


PS: obdobný případ se tu již řešil, dokonce s Vámi. big_smile

Editoval sedlacekdan (2. 11. 2012 19:19:45)


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

Zápatí