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

#651 Re: Calc » Filtrace sčítaných položek » 8. 7. 2014 14:10:34

Nevím zda to bude mít nějaký efekt, ale můžete zkusit sumproduct, třeba se to ve vztahu k aktualizaci bude chovat jinak. =SUMPRODUCT(data.$G$2:$G$500>=$FV$1;data.$G$2:$G$500<=$FV$2;data.O$2:O$500=$A1;data.P$2:P$500)

#652 Calc » Kontingenční tabulka jako filtr VYŘEŠENÉ » 8. 7. 2014 13:53:31

ludviktrnka
Odpovědí: 13

Dobrý den, zajímalo by mne zda lze kontingenční tabulku (KT) přinutit k tomu, aby nezdružovala stejné hodnoty ale všechno vypsala podobně jako to dělá obyčejný filtr. Používám KT na jakýsi "výcuc" tedy přehled a sdružení řádků do jedné "kategorie" se někdy pro přehlednost hodí a někdy to naopak dělá zmatek. Lze to nějak vypnout?

Pro příklad řadím hodnoty chronologicky, v prvním sloupečku KT je tedy počáteční čas a ve druhém koncový, v dalších sloupcích pak data k tomu příslušná. Vyjímečně se stane že je počáteční čas stejný a pak to nechá prázdnou buňku, což vypadá divně - jakoby to byla chyba.

#653 Re: Calc » Filtr KT se zadáním údaje prázdné VYŘEŠENO » 6. 6. 2014 13:34:31

Mám pocit že te v praxi celkem fachčí. Mám třeba v buňce W1 if(1=1;"";"něco"), když tuhle buňku pak načtu do proměnné projekt=oSheetObj.getCellrangeByName("W2").String a snažím se zjistit zda je zaplněna if ISEMPTY(projekt)=false Then tak se správně vyhodnotí jako prádná. Přičem dim projekt as string nikoli variant

#654 Re: Calc » Filtr KT se zadáním údaje prázdné VYŘEŠENO » 5. 6. 2014 20:06:28

Abych se přiznal moc to nechápu. Z vašeho makra to vypadá že výrazy ISNULL a ISEMPTY dávají pořád stejné hodnoty ať je v kontrolovaných buňkách obsaženo cokoli a záleží pouze na vnějších okolnostech a ne na obsahu buněk. Jediný použitelný se jeví výraz ISNUMERIC. Většina mých maker pracuje hodně provázaně s buňkami sešitu, takže mi záleží právě na obsahu, formu spíše zanedbávám, což asi není úplně správně.

Jak je možné že dotaz na cell.string = ISEMPTY(cell1.string) přičemž cell1 je prokazatelně prázdná buňka nevrátí true - to by mělo.

#655 Re: Calc » Filtr KT se zadáním údaje prázdné VYŘEŠENO » 5. 6. 2014 10:00:00

Díky, funguje to. Jestli to dobře chápu ISEMPTY je pro proměnou string totéž co nula pro proměnou value. Protože ISEMPTY pro proměnou.value = 0 dává false. Takže budu-li pracovat s čísly použiju normálně if xy = 0 then a budu-li pracovat s textem použiju if ISEMPTY(xy) then. Chápu to správně?

#656 Re: Calc » Filtr KT se zadáním údaje prázdné VYŘEŠENO » 4. 6. 2014 20:55:17

... tak jsem to nakonec vygůglil. Operátor se musí změnit na EMPTY, ovšem kombinace se zadáním jiného textového kriteria se musí vyřešit podmínkou

	projekt =  oSheetObj.getCellrangeByName("X105").String 'a tady je další kriterium s logickym AND
	FilterFields(1).Field = 9
	FilterFields(1).Connection = com.sun.star.sheet.FilterConnection.AND
		
	if projekt <> "nic" Then
		FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.EQUAL
		FilterFields(1).IsNumeric = False
		FilterFields(1).StringValue = projekt
	else
		FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.EMPTY
	endif

#657 Calc » Filtr KT se zadáním údaje prázdné VYŘEŠENO » 4. 6. 2014 18:35:31

ludviktrnka
Odpovědí: 8

Dobrý den, mám makro na filtr v kontigenční tabulce (KT). Funguje bezvadně až na to, že nevím jak zadat že chci aby mi vyfiltrovalo prázdné buňky. V normální filtru KT je možnost zadání - prázdné- nebo - neprázdné -, ale nevím jak to říct tomu makru. Neřešil jste to někdo? Do proměné "projekt" jsem zkoušel načíst 0, "", - prázdný -, (prázdné), nic nefunguje. Zároveň ovšem ta proměná bude někdy obsahovat text. (Samozřejmě to lze vyřešit pomocným sloupcem ve zdrojové tabulce, který bude naplněn nějakým pomocným znakem, takže budu filtrovat tento pomocný znak, ale to není tak elegantní :-)

sub filtr_kontingencni_tabulky

'nastavíme proměné filtru
	Dim FilterFields(1) as New com.sun.star.sheet.TableFilterField
	oController = ThisComponent.CurrentController
	oSheetObj = oController.ActiveSheet
	Tables = oSheetObj.DataPilotTables()   'Tables has all the DataPilot Tables in the Active Sheet

'a začínáme fitrovat KT, sloupce začínají od nuly
	id =  oSheetObj.getCellrangeByName("AA1").Value 'tady mám nějakou proměnou, dle níž fitruji
	FDes = Tables(0).getFilterDescriptor
	FilterFields(0).Field = 1
	FilterFields(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
	FilterFields(0).IsNumeric = True
	FilterFields(0).NumericValue = id

	projekt =  oSheetObj.getCellrangeByName("X105").String 'a tady je další kriterium s logickym AND
	FilterFields(1).Field = 9
	FilterFields(1).Operator = com.sun.star.sheet.FilterOperator.EQUAL
	FilterFields(1).IsNumeric = False
	FilterFields(1).StringValue = projekt
	FilterFields(1).Connection = com.sun.star.sheet.FilterConnection.AND
	
	FDes.FilterFields = FilterFields
	'konec filtru
	
end sub	

	
	

#658 Calc » vnoření makra VYŘEŠENO » 15. 5. 2014 13:09:07

ludviktrnka
Odpovědí: 0

Dobrý den. Zkouším vnořit jedno makro do druhého a nějak se mi to nedaří. První makro jsem vytvořil nahráváním a upravil tak aby dostávalo vstup "pozice as string", druhé makro by zatím nemělo dělat nic jiného než volat to první makro a předat mu hodnotu proměnné "pozice". Někde ovšem dělám chybu, nefunguje to :-(. Pomůžete mi prosím?

Sub presun (pozice as string)

dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = pozice
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub

Sub pokus

presun("B2")

end sub

EDIT: sorry su blbec, funguje to dobře, já jsem měl v modulu dvě makra stejného názvu "pokus" ...

#659 Re: Calc » kopia listu/filter » 14. 5. 2014 14:30:48

Zřejmě jediné opravdu efektivní a rychlé řešení je vytvořit filtr vždy nově makrem. Jak na takové makro je popsáno zde: Filtrování dat v buňkách s tím že je potřeba vložit nebo vygenerovat vždy nové jméno datové oblasti.

Právě na jedinečnosti datové oblasti vždy ztroskotá to překopírovávání. Pokud byste si nachystal více oblastí na listu_1 o dané velikosti a pak po překopírování vždy jen přepsal název nového listu na vybrané oblasti pak to bude fungovat, ale pracnost je srovnatelná s tím co vám právě vadí, takže to samozřejmě nepovažuji za žádné supr řešení.

#660 Re: Calc » opakovanie cisla x krat "VYŘEŠENÝ" » 13. 5. 2014 14:10:11

snad mohu přispět se svou troškou do mlýna. Jde to dvěma pomocnými sloupci + třetí jako výsledný.
sloupce A a B jsou zadání a začínají od A1 B1
řádek jedna bude malinko jiný a bude tam
ve sloupci C bude =A1
ve sloupci D bude =1
ve sloupci E bude =B1

na druhém řádku a pak roztaženě ve všech dalších:
C: =IF(E1>1;C1;INDEX($A$1:$A$35;D1+1;1))
D: =MATCH(C2;$A$1:$A$35;0)
E: =IF(E1>1;E1-1;INDEX($B$1:$B$35;D1+1;1))

Příklad je nastaven na 35 hodnot v zadání ale je to jedno, může jich být libovolně, stejně tak počet opakování jedné hodnoty. Když dojdou vzorce na konec tak se začnou objevovat chyby. To se dá ošetřit, ale taky nemusí, prostě se tam roztažení vzorců ukončí, záleží na tom jak moc má být soubor interaktivní - jak se budou měnit hodnoty a jak se bude výsledek vyhodnocovat.

Budu rád když dáte vědět jak jste pochodil, ještě jsem tady nikomu nic neradil, zato jsem tu už mnoho dostal.

Jo a není tu ošetřena nula opakování, to by se asi též dalo vymyslet, záleží na tom zda je to potřeba, nyní se zobrazuje minimálně jedenkrát i při zadání nuly.


... a takto by to bylo s ošetřením nuly
C: =IF(E1>1;C1;IF(AND(E1=1;INDEX($B$1:$B$35;D1+1;1)=0);INDEX($A$1:$A$35;D1+2;1);INDEX($A$1:$A$35;D1+1;1)))
D: =MATCH(C2;$A$1:$A$35;0)
E: =IF(E1>1;E1-1;IF(AND(E1=1;INDEX($B$1:$B$35;D1+1;1)=0);INDEX($B$1:$B$35;D1+2;1);INDEX($B$1:$B$35;D1+1;1)))

#661 Re: Calc » zobrazení seznamu dostupných tiskáren VYŘEŠENO » 12. 5. 2014 19:59:27

Díky moc, to je přesně co jsem potřeboval. To jsem ani nevěděl že tam takové nstavení je ... vždy jsem to přenastavoval přímo ve Windows. A to makro to krásně a jednoduše zpřístupňuje - supr.

#662 Calc » zobrazení seznamu dostupných tiskáren VYŘEŠENO » 12. 5. 2014 07:35:42

ludviktrnka
Odpovědí: 3

Dobrý den, lze nějak v Calcu při tisku pomocí makra (okopíroval jsem jej z pořadu malá makra - díky za ně) zpřístupnit volbu tiskárny? Jde o to že zadání natrvdo do makra by mohlo být uživatelsky nepřívětivé. Mohl bych to načíst z nějaké buňky v dokumentu, ale i tam by bylo dobré mít pravdivý vždy aktuální výběr dostupných tiskáren, jinak to uživatel určitě poplete. Lze ten seznam z Windows nějak vytáhnout? Já pracuji na Win XP, ale má to běžet na Vistách a sedmičkách.

Makrem tisknu vždy jednu stránku postupně při změněných hodnotách, takže ruční tisk je v tomto případě nepohodlný.

Dim vl_tisku (2)as new com.sun.star.beans.PropertyValue
Dim velikost As New com.sun.star.awt.Size
velikost.Width = 20000 ' tj 20 cm šířky
velikost.Height = 10000 ' tj 10 cm výšky
vl_tisku (0).Name = "Name"
vl_tisku (0).Value = "Moje_tiskárna" ' název Vaší tiskárny
vl_tisku (1).Name = "PaperOrientation"
vl_tisku (1).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
' nebo com.sun.star.view.PaperOrientation.PORTRAIT
vl_tisku (2).Name = "PaperSize"
vl_tisku (2). Value = velikost
Doc.Printer = vl_tisku ()

#663 Re: Calc » příkaz nahrazující ENTER - VYŘEŠENO » 16. 4. 2014 09:22:46

Teda díky moc, použil jsem metodu 3, na začátek jsem zařadil řádek co jste mi nedávno poradil

dokument.CurrentController.select(list.getCellRangeByName("F12"))

F12 je buňka pod tlačítkem :-) a funguje to bezvadně. To mě fakt nenapdlo že to půjde takto, ale je to jasný, má to logiku. Jetště jednou díky.
A překvapuje mne že funguje i to podmíněné formátování, že podmíněný formát zmizí při vyplňování buňky bez ohledu na předchozí hodnotu - to je skvělá pomůcka. Díky za ni, určitě ji použiju.
Metoda (1) je složitá na větší počet buněk, ale chápu, též se to dá použít.


Ve finále jsem tedy použil jak podmíněné formátování na základě porovnání s původní hodnotou, kterou mám stále k dispozici, a navíc makro přesouvá kurzor, čímž na 100% ukládá poslední zadání - musím říct, že díky tomu je to nyní uživatelsky velice přívětivé.

#664 Calc » příkaz nahrazující ENTER - VYŘEŠENO » 15. 4. 2014 20:59:23

ludviktrnka
Odpovědí: 2

Dobrý den

setkal jsem se s nepříjemným chováním uživatele - zadal vstupní hodnoty do buněk a tlačítkem spustil makro, to běželo správně, ale poslední zadanou hodnotu to vzalo špatně noboť uživatel ji "neodentroval" - nechal blikající kurzor v buňce. Je možné aby tlačítko spouštějící makro zároveň uložilo poslední hodnotu nebo je možné nějaký příkaz předřadit před vlastní makro? Díky.

#665 Re: Calc » Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-) » 14. 4. 2014 09:33:26

... jo jasný, šlo mi o to že nějak tuším že takový celkem jednoduchý úkon bude mít jednoduché řešení, kterému budu schopen porozumět. U toho makra na začátku jsem prostě nechápal co se to tam všechno nastavuje, u makra

vyber = doc.Sheets(0).getCellRangeByName("A1:C1")
doc.CurrentController.select(vyber)

už nic nepochopitelného není. Vynechává se zde i procedura "getcurrentcontroller" ... Asi jsem se špatně vyjádřil nešlo mi o délku jako takovou ale o celkem zbytečnou složitost, kterou jsem prostě nechápal a nevěděl jsem co z toho je nutné a co zbytečné. Teď už to tedy jakž takž vím. Samozřejmě že thiscomponent i Sheet s nímž pracuji mám už definované na začátku.

... no a k tomu dispečeru - je to prostě úplně jiný zápis a musel bych ho přebrat tak jak je včetně definice proměných, kombinace s "normálním" makrem je taková "divná" (Pardon, používám taková citová vyjádření, možná to sem nepatří)

Velmi si vážím vašich odpovědí.

#666 Re: Calc » Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-) » 14. 4. 2014 07:09:29

lp. napsal(a)

Nějak nechápu, co to má vlastně dělat.

V podstatě nic, jen na závěr jakéhosi makra to má přesunout kurzor na určenou pozici.

#667 Re: Calc » Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-) » 14. 4. 2014 07:06:44

neutr napsal(a)

Vyzkoušejte toto:

 Sub start
Doc = thisComponent
vyber = doc.Sheets(0).getCellRangeByName("A1:C1")
doc.CurrentController.select(vyber)
End sub

Funguje to stejně na 1 buňku jako na celý úsek.

Supr, z pěti řádků na dva řádky a ze čtyř proměnných na jednu, to se mi moc líbí, já jsem tušil že to může být mnohem jednoduší. Díky moc. Sice to tedy stále provádí výběr nikoli pouze přesun, ale to zas tak nevadí. To UNO jsem si zkoušel nahrát, to samozřejmě funguje, ale vypadá to hrozně vošklivě :-(

Nevíte tedy ještě jestli metoda CurrentController nemá ještě nějakou fukci "nastavit" tedy nikoli vybrat ale jen to tam prostě "přesunout". (možná se ptám hloupě, tak se předem omlouvám - už několik let jdu na ta makra furt jaksi odzadu, stále nechápu základní obecnou strukturu programu)

Dík moc.

#668 Re: Calc » Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-) » 13. 4. 2014 20:39:17

No jo to jsem zkoušel, ale to je jakýsi "imaginární kurzor", já tuto dávku chci dát na konec makra, aby uživatel měl skutečný fyzický kurzor na dané buňce.

#669 Calc » Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-) » 13. 4. 2014 17:25:55

ludviktrnka
Odpovědí: 8

Dobrý den

našel jsem takové makro tuším od Hanuse na nastavení pozice kurzoru. Chtěl bych se zeptat zda to nejde i jednodušeji a která z těch nastavení změnit aby buňka skončila jako neoznačená? :-) tedy jen s pozicí kurzoru. Zde je to makro:

kontroler = dokument.getCurrentController()
vyber = dokument.currentselection	
list = dokument.sheets(vyber.rangeaddress.sheet)
bunka = list.getCellRangeByName("B2")
kontroler.Select(bunka) 

#670 Re: Calc » kopírování pomocí getDataArray-setDataArray - VYŘEŠENO » 12. 4. 2014 09:21:29

Dobrý den, také jsem ten co se nechal svést návodem na internetu (ale jinak díky za něj a tady jsem našel pak opravu). Chci se ale ještě zeptat jak tedy deklarovat proměnou "odkud" (proměnou "kam" jsem vypustil, ta není dle vašeho návodu potřeba). Funguje mi to když napíšu jen dim odkud bez další specifikace, ale nevím zda je to tak správně, zda to není pak moc paměťově náročné. Kopíruji pouze kladná čísla s max dvěma desetinými místy a do výše 99 tisíc a navíc jsou to z 80% nuly. Díky moc za vaše články a příspěvky.

sedlacekdan napsal(a)
LIT napsal(a)
kam = List_A.getCellRangeByPosition(i,11,i,l).setDataArray(odkud)

Upravte na:

List_A.getCellRangeByPosition(i,11,i,l).setDataArray(odkud)

proměnná kam je specifikována jako objekt (buňky) při zápisu kam = List_A.getCellRangeByPosition(i,11,i,l).setDataArray(oblast) ale objektem není, proto ta chyba


;o)

#671 Re: Calc » Jak tisknout vybarevný obdélník (obrázek) na pozadí tabulky - VYŘEŠENO » 10. 3. 2014 12:08:53

děkuji převelice - šipka z panelu pro kresby funguje i na tenhle objekt "Na pozadí", stačí kliknout kamkoli do prostoru obrázku. Ještě jednou děkuji.

#672 Calc » Jak tisknout vybarevný obdélník (obrázek) na pozadí tabulky - VYŘEŠENO » 10. 3. 2014 11:23:05

ludviktrnka
Odpovědí: 2

Dobrý den. Mám tabulku a chtěl bych ji podložit velkým jemně šrafovaným obdélníkem, který by měl tedy tvořit pozadí té tabulky. Všechno jsem si udělal, ale nakonec když jsem to chtěl tisknout tak jediná možnost jak se mi to podařilo bylo přenést obdélník "Na pozadí" (volba v menu asociace při kliknutí pravým tlačítkem myši a na "Uspořádání"). Jiné volby jako "přenést dál" nebo "přenést na pozadí" vůbec nefungují ve vztahu k buňkám sešitu. Volba "Na pozadí" funguje přesně jak potřebuji, jenže se úplně ztratí jakákoli možnost editace, objekt už vůbec nejde uchopit, tzn. nijak změnit ani vymazat, jediná možnost je tlačítko "zpět", což je ovšem poněkud hloupý. Nevíte někdo co s tím? Přitom tedy na toolbaru existuje i volba "Na popředí", jenže když mi to nejde uchopit ...??? (verze OpenOffice 4.0.1)

#673 Re: Calc » Dávkový převod Calc -> pdf a txt zároveň makrem - VYŘEŠENO » 4. 3. 2014 10:20:22

díky za rady - asi se musím omluvit neutrovi - je to pro mne příliš náročné - kamarád mi vytvořil samostatný program pro Windows, který spáruje adresy a přílohy a s jednotným textem mailu všechno hezky odešle, takže mým jediným úkolem je vytvořit ty individuální soubory příloh a celkem bych se ani do ničeho dalšího nepouštěl. Omluvám se za nedorozumnění.
Už si generuju PDF a generuji si i TXT, jen to neumím dát dohromady. Zkusil jsem přepínání listu pomocí řádků od "sedlacekdan" ale hned na list=thisComponent.sheets(16) to háže chybu - píše to "neznámá hodnota vlastnosti".


Dávám tedy celý svůj kód, kdyby se vám to chtělo procházet a předem velice děkuji pokud opravdu někdo najde nápravu chyby.

HEURÉKA, CHYBU JSEM MAKONEC OBJEVIL SÁM. Proměnná list není string ale object a je to. Díky mistru Sedláčkovi

sub SheetToPDF_faktura

dim sSheetName as string
dim sSheetName2 as string
dim sRange as string
dim sPATH as string
dim i as integer
dim pocet as integer
dim arg(0) as new com.sun.star.beans.PropertyValue
dim argt(1) as new com.sun.star.beans.PropertyValue
dim PA() as object
dim CRA(0) as new com.sun.star.table.CellRangeAddress
dim dokument as object
dim doc as object
dim s1 as object
dim adresa as string
dim list as string
dim pocitadlo as integer
dim tlacitko as integer

'on error goto konec

dokument = ThisComponent
s1 = dokument.Sheets.GetByName("faktura_automat")

sSheetName = "faktura_automat"
sSheetName2 = "export.txt"

sRange = "E1:M217"

' skryta vychozi objektova promenna
  with ThisComponent.Sheets

    dim bVisible(.Count-2)
 
    for i = 0 to .Count-2
      with .getByIndex(i)
      ' uloz viditelnost listu
        bVisible(i) = .IsVisible
      ' uloz oblasti tisku
        redim preserve PA(i)
        PA(i) = .PrintAreas
      ' zrus oblasti tisku
        .PrintAreas = array()
        if .Name = sSheetName Then                           
        ' Zadany list bude viditelny                         
          .IsVisible = true 
        ' Dle potreby se nastavi oblast tisku  
           if .Name = sSheetName2 Then                           
        ' Zadany list bude viditelny                         
          .IsVisible = true
           end if              
          if sRange <> "" then                               
            CRA(0) = .getCellRangeByName(sRange).RangeAddress
            .setPrintAreas(CRA())                            
          end if
        else
        ' Skryj nezadouci listy
          .IsVisible = false
        end if
      end with
    next i
   end with
   
   msgbox ("Spusť export!",0,"Pojistná zastávka")

	pocet = s1.GetCellRangeByName("X33").Value-1

for i = 0 to pocet

	wait 200
	
	doc = thisComponent.currentController
    list = thisComponent.sheets(16) 'faktura_automat
    doc.setActivesheet(list) ' nastaví aktivní list	
	
	'jdeme tisknout
	sPATH = s1.GetCellRangeByName("X32").String
 	arg(0).Name = "FilterName"
	arg(0).Value = "calc_pdf_Export"
    ThisComponent.storeToURL(ConvertToUrl(sPATH), arg())
    
    doc = thisComponent.currentController
    list = thisComponent.sheets(21) 'export_txt 
    doc.setActivesheet(list) ' nastaví aktivní list
        
    adresa = s1.GetCellRangeByName("X79").String
    argt(0).Name = "FilterName"
    argt(0).Value = "Text - txt - csv (StarCalc)"
    argt(1).Name = "FilterOptions"
    argt(1).Value = "32,,76,28"
    ThisComponent.storeToURL(convertToURL(adresa),argt())
    
    	
	if i < pocet then
		'tlacitko = msgbox ("Vytištěno, chystat další?",36,"Konec tisku?")
		'if tlacitko = 7 then
		   'goto konec
		'end if
		pocitadlo = s1.GetCellRangeByName("X1").Value + 1
		s1.GetCellRangeByName("X1").Value = pocitadlo
	end if

next i

  doc = thisComponent.currentController
  list = thisComponent.sheets(16) 'faktura_automat
  doc.setActivesheet(list) ' nastaví aktivní list
    
  'konec:
  
  msgbox ("Hotovo. Ještě vrátím listy zpět.",0,"Ukončení")
  
  with ThisComponent.Sheets
    for i = 0 to .Count-1
      with .getByIndex(i)
      ' Zobraz puvodni listy
        .IsVisible = bVisible(i)
      ' Nastav puvodni tiskove oblasti
        .PrintAreas = PA(i)
      end with
    next i

  end with
end sub

#674 Re: Calc » Dávkový převod Calc -> pdf a txt zároveň makrem - VYŘEŠENO » 28. 2. 2014 15:43:11

Velice děkuji, ale to je pro mne už vyšší dívčí ... jestli to dobře chápu zde se operuje s otvíráním toho nového souboru - to je asi hrozně zdlouhavé - já potřebuji automaticky bezzásahově a rychle vygenerovat cca 150 až max 500 malých textíků v jednotlivých souborech, pro následné rozeslání maily, kde jednotlivé soubory budou jako přílohy. V podstatě už to vyřešené mám, jen musím to makro spouštět z toho listu kde mám vykopírovaná ta data což se mi úplně nehodí, ale lze to přežít :-) Stačilo by mi kdyby existovala proměná, která do té funkce thisComponent.storeToURL vsune informaci o tom který list se má exportovat, to by bylo super a už by mi opravdu nic nechybělo.

Používám nyní toto makro:

sub uloz_txt

dim sSheetName as string
dim i as integer
dim pocet as integer
dim s1 as object
dim pocitadlo as integer
dim tlacitko as integer
dim adresa as string
dim doc as object
dim arg(1) as new com.sun.star.beans.PropertyValue

on error goto konec

doc = thisComponent

    s1 = doc.Sheets.GetByName("faktura_automat")
    sSheetName = "faktura_automat"

	pocet = s1.GetCellRangeByName("X80").Value-1

for i = 0 to pocet

	wait 200

	'jdeme tisknout
	adresa = s1.GetCellRangeByName("X79").String
        arg(0).Name = "FilterName"
        arg(0).Value = "Text - txt - csv (StarCalc)"
        arg(1).Name = "FilterOptions"
        arg(1).Value = "32,,76,28" 'zde hodnota 28 je zcela zbytečná, exportuje se vždy celý list
        doc.storeToURL(convertToURL(adresa),arg())
	
	if i < pocet then
	    pocitadlo = s1.GetCellRangeByName("X1").Value + 1
	    s1.GetCellRangeByName("X1").Value = pocitadlo
	end if

next i

  konec:
  
   msgbox ("Hotovo!",0,"Ukončení")

end sub

#675 Re: Calc » Dávkový převod Calc -> pdf a txt zároveň makrem - VYŘEŠENO » 27. 2. 2014 19:49:11

Jestli se můžu ještě zeptat ... toto makro mi hrozně pomohlo už tak jak je, ale kdyby mohlo buď exportovat jiný list než aktální nebo případně nějaký konkretizovaný výběr buněk na aktuálním listu, tak by to bylo úplně super. Víte i s tímto poradit? Zkoušel jsem to nahrávání makra, ale tam je opravdu pouze jediná možnost a to celý aktuální list. Jedině by šlo se přepnout a pak zase zpět, jenže ve chvíli běhu jiného makra jehož má být toto součástí, budou všechny okolní listy skryté (musí být pro danou funkčnost), tak se obávám že to bude dělat neplechu.
Mým cílem je hromadný export zároveň do pdf (to už umím) a do txt. Jenže samozřejmě do pdf se tiskne a oblast tisku lze definovat a tady je metoda jiná a tak si s tím neumím poradit.

Jo a ten třetí parametr značí (jak jsem tedy dost krokolomě zjistil) znakovou sadu. Ale která se skrývá pod jakým číslem to nevím, ale 76 funguje dobře :-)

Aha tak leccos je tady Pokročilé volby ukládání a načítání souborů

Zápatí

Používáme FluxBB