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

#26 Calc » Kopírování a vkládání pomocí makra (VYŘEŠENO) » 26. 8. 2022 08:36:59

barevnej
Odpovědí: 9

Zkouším přijít na jednu věc. Kopírovat nějaký výsledek a ten poté vložit jako hodnotu čisla.
COPY.gif
_
Zkoušel jsem zaznamenat makro což nefunguje.

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$E$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$E$2:$E$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())


end sub

_
V praxi by to mělo sloužit ne jen kopírování hodnot ve stejném sešitě ale i napříč jinými sešity. Nechci linkovat na jiné sešity jelikož se pak otevírá i na jiných počítačích a data by se už nenačetla.

#27 Re: Calc » Export oblast do textového PHP (VYŘEŠENO) » 24. 8. 2022 14:30:14

Tak už jsem to vše poupravil a pochopil a vše funguje jak má, dokonce i to aby to šlo po řádkách a ne sloupcích. Moc děkuji.

Sub DejMatici
Dim oCell As Object 
oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = 1 '	začátek řádku (počítá se od nuly)
SR = 2 '	začátek sloupce (počítá se od nuly)
EC = 5 '	počet řádků od prvního kodu (počítá se od jedničky)
ER = 5 '	počet sloupců od prvního kodu (počítá se od jedničky)
End With 
oSheet = ThisComponent.Sheets(SH)
Dim Vypis as string
Vypis = Vypis & "<?php" + Chr(10) + Chr(13) 
For i = SC To EC
For j = SR To ER
IF j = ER Then
Vypis = Vypis & oSheet.getCellByPosition(j, i).String + Chr(10)
Else
Vypis = Vypis & oSheet.getCellByPosition(j, i).String + Chr(9)
End If
Next j
Next i
Vypis = Vypis + Chr(13) & "?>"
Ulozit_PHP(Vypis)
End Sub

sub Ulozit_PHP(ByVal Vypis as string)
sVar = ConvertFromUrl(ThisComponent.URL)
iVar = Len(svar)
sTimer = Timer()
For i = iVar To 1 step -1
IF Mid(svar,i,1) = "/" or Mid(svar,i,1) = "\" then
sVal = left(sVar,i)
Exit For
end If
next i
MyUrl = ConvertToUrl(sVal & "stav.php")	
Dim arg(0) As New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden" 
arg(0).Value = True
oWName = ConvertToUrl(Nahrady)															
TestDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, arg())															
dim document   as object
dim dispatcher as object
document   = TestDoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = MyUrl
args1(1).Name = "FilterName"
args1(1).Value = "Text"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Dim oText As Object																	
  		oText = TestDoc.getText()															
		oText.insertString(oText.getStart(),Vypis, false)	
TestDoc.Store()
TestDoc.dispose	
MsgBox ("Exportován stav.php")
end sub

#28 Re: Calc » Export oblast do textového PHP (VYŘEŠENO) » 24. 8. 2022 14:04:05

Aha jsem blbej a nečtu smile
SC = 2
SR = 1
EC = 6
ER = 5

Jen je zvláštní jak jede jakoby ze shora dolů, jako by jste četl čínský text. Asi to nebude mít na výsledek vliv, jen je to opticky jakoby nepřehledné.

#29 Re: Calc » Export oblast do textového PHP (VYŘEŠENO) » 24. 8. 2022 13:28:16

Nyní to vygeneruje po spoštění makra "DejMatici" správně ve stejné složce i název "stav.php" který obsahuje

<?php



?>

Ovšem data uprostřed chybí, kde mám v tom makru navolit oblast například C2G6
_
ps: před poslední end sub jsem si dal MsgBox ("Exportován stav.php") smile

#30 Calc » Export oblast do textového PHP (VYŘEŠENO) » 24. 8. 2022 09:39:22

barevnej
Odpovědí: 4

Vaše rady tady jsou opravdu excelentní a v dnešní nelehké době mi moc pomáhají.
K věci. Generuji si část PHP pomocí tabulky a ten pak kopíruji a ukládám jako text do souboru "stav.php"
_
➊ Exportovala by se předem danná oblast dat, třeba viz příklad C2G6 (určoval bych v makru)
2022-08-24_11-00.png
_
➋ Před "<?php" a za "?>" výsledný export by se doplnil text který v tabulce není tak aby výsledek vypad takto.

<?php

$bezEU1 = '8,69';	$sEU1 = '10,51';	$daEU1 = '<!-- -->';	$dbEU1 = '';	$dcEU1 = '';
$bezEU2 = '9,78';	$sEU2 = '11,83';	$daEU2 = '<!-- -->';	$dbEU2 = '';	$dcEU2 = '';
$bezEU3 = '13,55';	$sEU3 = '16,40';	$daEU3 = '<!-- -->';	$dbEU3 = '';	$dcEU3 = '';
$bezEU4 = '16,32';	$sEU4 = '19,75';	$daEU4 = '<!--';	$dbEU4 = '-->';	$dcEU4 = '</select><!--';
$bezEU5 = '21,06';	$sEU5 = '25,48';	$daEU5 = '<!-- -->';	$dbEU5 = '';	$dcEU5 = '';

?>

_
➌ Uložilo by se ve stejné složce kde se nachází tabulka. Název by byl vždy stejný a to "stav.php", již se ve složce tento soubor bude nacházet takže jej export bude přepisovat.
_
_
Doteď to dělám ručně tak že otevřu textový editor a zkopíruji tabulku do něj ručně, toto by mi urychlilo práci.

#31 Re: Calc » Makro na opakování » 20. 7. 2022 10:52:56

Dokonalé, perfektní, nádhera. Děkuji.

#32 Re: Calc » Makro na opakování » 20. 7. 2022 09:00:41

Možná jen dotaz, jak zvolím jiný sloupec? Vím že se počítá od nuly ale nevím kterou tu nulu přepsat.

#34 Re: Calc » Makro na opakování » 18. 7. 2022 08:20:19

První sloupec má vždy popis takže začínám od druhého řádku. Zatím to dělám vzorcem v druhém sloupci na druhém řádku "B2"

=IF(ISBLANK(A2);B1;A2)

Akorát mi jde o to že teď ručně musím přidat sloupec "B" abych tam udělal onen vzorec. Právě bych rád to samé aby se aplikovalo v tom samém sloupci tj ve sloupci "A".
Jak říkám zatím si poradím ručně takto ovšem jelikož to dělám prakticky každý den tak mě napadlo si to ulehčit smile

#35 Calc » Makro na opakování » 17. 7. 2022 14:34:01

barevnej
Odpovědí: 8

Nevím jak to pojmenovat ale potřebuji v jednom sloupci rozkopírovat kody viz obrázek. Vzorcem bych to uměl ale datábáze má desítky tisíc řádků tak je to nepraktické, Makro by bylo ideální.
_
2022-07-17_15-23.png
_
A výsledek by měl být rozkopírovat kody dolů dokud nenarazí na jiný a tak pořád dokola dokud nenarazí na slovo KONEC a tam zastaví, jinak by to bylo nekonečné.
_
2022-07-17_15-23_1.png
_
ps: Makro použit na aktualním listu, ne podle jména jelikož má pokaždé jméno listu jiné.

#36 Re: Calc » SUM určitý počet řádků (VYŘEŠENO) » 13. 7. 2022 10:27:59

Aha takže ono číslo 99 by mělo být vždy větší než li je prohledávaná oblast.
_
Funguje to parádně, dohromady bych takový vzorec nedal ale tento už naplno využívám každý den.
_
Děkuji moc.

#37 Re: Calc » SUM určitý počet řádků (VYŘEŠENO) » 11. 7. 2022 07:46:04

@neutr
makro funguje na malém vzorku rychle ale jak jsem ho hodil do komplexního sešitu s více než 5500 řádků a hromadou jiných návazných výpočtů a propojení, se makro počítalo více jak 15min a pak už jsem nevydržel a zabil ho.
_
@LADER
teda než jsem to pochopil, ano ten trik že za vzorec dám mezeru a až pak Ctrl+Shift+Enter funguje. A zkopírování a roztažení dvou označených řádků již fungovalo. Na mé veliké tabulce ozázka 5 vteřin a je spočítáno smile
Jen dotaz, to 999 znamená že prozkoumává max 999 řádků pod vzorcem?
_
Zatím nechápu co to maticové vzorce přesně jsou ale vypadá to zajímavě. Zkusím si o tom něco přečíst.
_
Děkuji oboum za pomoc. wink

#38 Re: Calc » SUM určitý počet řádků (VYŘEŠENO) » 10. 7. 2022 16:14:22

Tak jsem si říkal super vypadá to funkčně. Jenže to vůbec nechápu neutral
Poprvé slyším o něčem jako jsou maticové funkce. To bude asi toto že
2022-07-10_17-06.png
_
Jenže ono to nejde kopírovat do jiného sešitu a když to zkopíruji je to bez těch spešl závorek, jsem si říkal že ty závorky napíšu ale tak to nefunguje.
_
Potom také ve vašem případě jsem nedocílil onoho "protažení" vzorce z buňky C3 dolů. Možná jsem to jen nepochopil.
_
Děkuji za pomoc.

#39 Calc » SUM určitý počet řádků (VYŘEŠENO) » 10. 7. 2022 12:29:23

barevnej
Odpovědí: 7

Mám sloupec "A" a v tom je náhodný text a jinak prázdné buňky.
Ve sloupci "B" jsou čísla.
Potřebuji pokud ve sloupci "A" je nějaký text tak sečíst všechny čísla dokud nenarazí zase na nějaký text.
_
Obrázek více než li tisíce slov smile
2022-07-10_13-43.png
_
Obarvené je to poze pro lepší pochopení. Nyní dokážu SUM do vzorce dopsat pouze ručně, jak ale udělat abych mohl vzorec protáhnout automaticky?
_
EDIT: přidal jsem na konec "KONEC" aby se poslední vzorec neprohledával automaticky do nekonečna.

#40 Re: Calc » Ukládat pomocí makra (VYŘEŠENO) » 6. 7. 2022 08:40:44

Tak veliké díky neutr wink
Vzhledem k tomu že výsledek je lepší než li jsem očekával tak jsem upravil i původní požadavky.
V principu to funguje takto. Máte soubor Tabulka.ods kde v buňce X3=Zákazník aktivního listu máte jméno zákazníka a po spuštění tohoto makra se soubor sám uloží kam si ho nasměrujete ve formátu Zákazník_6_7_2022_Tabulka.ods
Jistě se toto může hodit každému kdo často ukládá něco dle nějakého pravidla wink
_

REM  *****  BASIC  *****

Sub Ulozit_jako_datumem
Dim oSheet
Dim sVar, sVal as string
Dim iCount, iLeft as integer
Dim Propval()
Sheets = ThisComponent.getSheets()
oSheet = ThisComponent.CurrentController.ActiveSheet
sVar = ConvertFromUrl(ThisComponent.URL)
sVal = oSheet.getCellRangeByName("X3").String
sVal = sVal & "_" & Day(NOW) & "_" & Month(NOW) & "_" & Year(NOW)& ThisComponent.Title & ""
sVar = FilPickFolder()
FileURL = convertToURL(sVar & "/" & sVal)
ThisComponent.StoreAsURL(FileURL, Propval())
End Sub

Function FilPickFolder()
	Dim oFolderPicker As Object
	Dim oAccept As Integer
	Dim oFolder()
	Dim oFolderURL as String, oGetFolderName as String
		oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
		oFolderPicker.setTitle ("Vyber složku kam uložit")
		oFolderPicker.setDisplayDirectory("file:///home/uživatelské_jméno/Plocha/") '<-toto je cesta v Linuxu kde chete aby se Vám průzkumník otevřel. Ve windows by cesta začínala takto bez file:/// -> D:/   Nebo tento řádek odstraňte a bude Vám nabízet výchozí adresář systému.
		oFolderPicker.setDescription("Vyber adresář")
		oAccept = oFolderPicker.execute()
		If oAccept = 1 Then
			oFolder() = oFolderPicker.getDirectory()
     		oFolderURL = oFolder(0)
     		oGetFolderName = ConvertFromURL(oFolderURL)
     		FilPickFolder = oGetFolderName
     	else
     		oFolderPicker.cancel()
   		End If
End Function

#41 Re: Calc » Ukládat pomocí makra (VYŘEŠENO) » 4. 7. 2022 11:53:42

@LADER To bych bral jen pokud by to nešlo udělat makrem, jakože nouzovku. smile

#42 Re: Calc » Ukládat pomocí makra (VYŘEŠENO) » 4. 7. 2022 07:30:46

Dobrý den, máte pravdu že jsem to popsal zmatečně. Omlouvám se.
Je fakt že jsem si to u druhé odpovědi rozmyslel a proto ten zmatek.
Zkusím to popsat znova smile
_2022_SALE.ods je vzorový soubor do kterého vyplňuji objednávku, proto ho nepřepisuji ale ukládám jako nový soubor.
Po spuštění makra by bylo stejné jako bych klikl na "Uložit jako..." s tím že by se předvyplnil název souboru a já bych si jen zvolil kam si ho chci uložit.
2022-07-04_08-23.png
_
Nyní to dělám stejně jen s tím že si název souboru vyplňuju ručně.

#43 Re: Calc » Ukládat pomocí makra (VYŘEŠENO) » 3. 7. 2022 15:50:12

Po spuštění makra se titulek okna přejmenuje naprosto správně jak jsem chtěl.
Jenže soubor se neuloží...
_
Teď mě napadlo zda by nešlo aby po spuštění makra vyskočilo okno "Uložit jako.." s tím že by už byla předvyplněn onen název a já si jen klikl kam ho uložit. smile Toto by bylo dokonalé.
_
Jde o to když takovou opreci denně opakujete nespočetkrát tak proto hledám jak si práci usnadnit.
_
ps: oSheet = Sheets.getByName("Nabídka") tam může být přímo aktuální list? Tlačítko by bylo umístěno na něm.

#44 Calc » Ukládat pomocí makra (VYŘEŠENO) » 3. 7. 2022 11:55:06

barevnej
Odpovědí: 8

Krásný letní den přeji smile
_
Mám myšlenku a zkusím jí popsat.
Mám tabulku která se nějak jmenuje "_2022_SALE.ods" jméno je pokaždé jiné.
Pak v tabulce mám vždy na místě X3 jméno zákazníka.
_
Dám "uložit jako.." vždy do stejné složky "tady by mi stačilo vědět kam napsat cestu v onom makru"
Výsledný název souboru je obsah X3 + datum (bez roku pač ten už je obsažen v názvu) + zbytek původního názvu.
Příklad: X3=Zákazník  Jméno původního souboru _2022_SALE.ods
Výsledný uložený soubor Zákazník_3_7_2022_SALE.ods
ps. datum neumsí striktně být bez úvodních nul, tj jestli to bude Zákazník_03_07_2022_SALE.ods nevadí, i když původní varianta je "hezčí"
Soubor hned prosím nezavírat, ještě s ním dále pracuji.

#45 Re: Calc » Zobrazeni 2 listu vedle sebe » 14. 6. 2022 12:02:54

Sakra proč jsem se to dozvěděl až teď. To je super!

#47 Calc » Změna tečky na čárku (VYŘEŠENO) » 6. 5. 2022 08:52:32

barevnej
Odpovědí: 2

Zkusím popsat co potřebuji. Mám mraky ceníků a občas se stane že někdo namísto čárky dá tečku a pokud si toho nevšimnu tak to pochopitelně nefunguje.
Dám příklad kdy někdy je celé číslo, někdy je v čísle desetiná čárka a někdy tečka, prostě mix.
2022-05-06_09-38.png
Ano funkcí najít a nahradit to jde ale nešlo by to vzorcem?
Výsledek by byl jako když dám najít a nahradit ve sloupci "B"
2022-05-06_09-39.png
_
Snad jsem to napsal pochopitelně. Potřeboval bych vzorec který když narazí na tečku tak z ní udělá čárku, ne macro.

#48 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 29. 4. 2022 08:17:46

Omlouvám se byl jsem chvíli mimo a pak jsem si hrál s novým Ubuntu co teď vyšlo smile
_
Když jsem četl co jste napsal tak jsem šel testovat "šestou" verzi trochu skepticky. Vaše vzorová tabulka funguje dokonale a řekl jsem si že to je jen tím že je "malá" proto jsem se rozhodl to otestovat na mé největší tabulce s cca 10tis obrázky a celkové velikosti přes 13MB, pokud v takové tabulce se pokusím ručně smazat listy tak je to i několik minut. Nastavil jsem tedy Vaše "šesté" makro s spustil... yikes
Za pár vteřin hotovo bez chyb big_smile Nádhera moc děkuji, tato verze je dokonalá.
_
a děkuji za předpřipravený řádek 54, ihned jsem využil.
Jste mistr cool

#49 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 19. 4. 2022 18:11:40

V pohodě, nechvátá to. Už i tak je to pecka. Jen jsem oznámil toto divné chování a třeba Vám to napoví v čem je zakopaný pes.

#50 Re: Calc » Makro export listu do XLSX (VYŘEŠENO) » 19. 4. 2022 10:22:55

Jsem nějak umřel na svátky...
_
Tak jsem testoval jak ve virtuílním tak přímo na svém počítači a přišel jsem na zajímavou věc.
Pokud otevřu tabulku a dám exportovat list do XLSX a stisknu to žluté tlačítko tak to hodí naší známou hlášku anic se nestane. A je jedno zda nastavím "Wait" na jakkoukoliv hodnotu.
_
Ale pozor tady jsem narazil na tu záhadu. Otevřu li dialogové okno Moje makra a nechám ho otevřené a nic v něm nedělám a dám si ho někam bokem. Pak mohu zavřít a znova otevřít onu tabulku a vše funguje dokonale, dokud to okno s úpravou maker nezavřu.
_
Pro ilustraci jsem to nahrál na VIDEO
_
Hádám že Vám to fungovalo úplně stejně když jste to testoval.

Zápatí

Používáme FluxBB