Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: registrovany123 20. 11. 2022, 12:05:51

Název: Alternativa za Excel Visual Basic?
Přispěvatel: registrovany123 20. 11. 2022, 12:05:51
Zdravim,

dotaz, pouzivam Excel uz nejaky ten patek, ale az ted jsem se dostal k tomu, ze potrebuju pridat programovy kod. A nejsem teda moc z Visual Basicu nadsen - jednak s tim editorem se spatne pracuje a druhak ted se divam, ze na zmeny aplikovane makry nefunguje tlacitko zpet. Nehlede na jazyk samotny:

Kód: [Vybrat]

Sub RoundToZero1()
 For Counter = 1 To 20
 Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
 If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
 Next Counter
End Sub

Ach jo...

Neni nejaka alternativa za Excel, a ted nemyslim OpenOffice - to bych si asi moc nepomohl. Co treba ten od Google, tam se da programovat v Javascriptu, ne? Da se to pouzivat?

Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Wavelet 20. 11. 2022, 12:29:20
Zůstaň u VBA. Alternativy jsou pracnější a snad i horší. Teoreticky se můžeš různě připojit pomocí .NETu
ale pro to co koukám, že potřebuješ, bude VBA nejjednodušší cesta. Alternativně ještě JS(TS), ale to bude zatím ještě asi horší alternativa.
https://learn.microsoft.com/en-us/javascript/api/office-scripts/excelscript?view=office-scripts

Já tedy bych Excel používal co nejméně a co nejvíce výpočtů mimo. Snad už vyrobit nějaké to webové klikátko je lehčí.  Pro exploraci a zpracování dat je tu teď Power Query + funkcionální M language. Udržovat Excel je většinou peklo i když jako koncept komputačního grafu, je to zajímavé.

Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: alex6bbc 20. 11. 2022, 12:55:16
https://www.pyxll.com/
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Ink 20. 11. 2022, 14:47:54
Proč myslíš, že by sis s LibreOffice Calc nepomohl a "s tím od Google" ano?
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: registrovany123 20. 11. 2022, 20:51:46
https://www.pyxll.com/

Licence za 600,- Kc / mesic pro individual usera? To fakt ne...
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Karmelos 20. 11. 2022, 21:10:07
Co třeba vykašlat se na Excel a udělat to v R?
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: texan 20. 11. 2022, 21:55:01
https://www.knime.com/ načítání větších dat je násobně rychlejší než v excelu, skripty v Python, R a SQL, JavaScript pro vizualizaci
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: janevim11165123 21. 11. 2022, 00:33:11
Můžeš C# jak už kolega výše zmínil. Hledej VSTO. Ale je to docela opruz, protože to je jen wrapper nad COM objekty, takže třeba Watch window nefunguje při debugování a asi se toho nejde víc.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: ja. 21. 11. 2022, 01:42:21
https://www.pyxll.com/

https://www.xlwings.org/
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: crown 21. 11. 2022, 09:57:31
Můžeš C# jak už kolega výše zmínil. Hledej VSTO. Ale je to docela opruz, protože to je jen wrapper nad COM objekty, takže třeba Watch window nefunguje při debugování a asi se toho nejde víc.

Presne tak. Po C# excel kod je potreba napsad kod nejdriv v vba, odzkouset a potom ho prepsat do C# (volani COM objektu je vicemene stejne jako ve vba). Vyplati se to jen, pokud je komunikace s excelem podruzna vec a cela hlavni logika je napsana v c#. Treba na export dat do excelu. Pripadne jako jednotne klikatko spoustejici ruzna mala excel makra.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Wavelet 21. 11. 2022, 11:31:48
Jako pokud bych měl radit radikálně, jako někteří kolegové, tak to udělejte mimo Excel: R, Julia Python.
Často když někdo vidí až funkční věc mimo Excel, ukáže se, že ani ten Excel nechtěl.
Jinak všechny Python knihovny co tu jsou uvedeny, jsou jen jakási náplast pro korporát, ale nevím jak užitečně.
Pokud už můžu použít Python, pak nemám moc potřebu se vracet do Excelu ne?
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Tomas-T 21. 11. 2022, 11:40:31
Excel nejsou jen ta makra.
Výsledky maker v něm můžu bez velkého úsilí dál zpracovávat vestavěnými funkcemi a zobrazovat a tisknout v hezky formátovaných tabulkách a předpřipravených grafech.
 
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Idris 21. 11. 2022, 11:57:02
to udělejte mimo Excel: R, Julia Python.
Souhlas.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Martin Poljak 21. 11. 2022, 12:07:12
S vaším dotazem je problém ten, že se ptáte na webu, kde kdyby se sekretářka zeptala, v čem napsat průvodní dopis k reklamaci mixéru, dostanete se vždy k LaTeXu. (Ostatně já v něm průvodní dopisy k reklamacím mixérů běžně píšu, ale asi to není přesně ta odpověď, co by ona chtěla slyšet.)
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: mikrom 21. 11. 2022, 12:49:58
Na VBA neni nic zle, je to jednoduchy jazyk a je k tomu mnozstvo informacii a volne dostupneho kodu.
Niekde som cital, ze v LibreOffice Calcu sa da pouzivat na skriptovanie aj Python, ale ked som podla navodu hladal na mojom Linux PC, tak som tam taku moznost vobec nenasiel, ale len LibreOffice Basic.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: ja. 21. 11. 2022, 13:12:50
Niekde som cital, ze v LibreOffice Calcu sa da pouzivat na skriptovanie aj Python, ale ked som podla navodu hladal na mojom Linux PC, tak som tam taku moznost vobec nenasiel, ale len LibreOffice Basic.

Pretoze Python v LO vyzaduje nakonfigurovat:

https://help.libreoffice.org/latest/lo/text/sbasic/python/python_ide.html

https://wiki.documentfoundation.org/Macros/Python_Design_Guide
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Wavelet 21. 11. 2022, 13:21:58
Mimo téma, ale pro zajímavost: Excel má konečně Lambda funkce a pracoval na tom S. P. Jones
https://www.youtube.com/watch?v=r9kf9an-zPY&ab_channel=TheArchimedeans
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: mikrom 21. 11. 2022, 14:14:05
Pretoze Python v LO vyzaduje nakonfigurovat:
+1

ano, zistil som ze si musim minimalne doinstalovat este toto:
Kód: [Vybrat]
sudo apt install libreoffice-script-provider-python
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: SpaceExit 21. 11. 2022, 14:30:52
Nevím, jestli by to pro vás bylo řešení. Ale existuje možnost zapisovat do excelu v pythonu a ostatních jazycích. Takže, co můžete udělat je, že si naklikáte celý excel ručně s tím, že se zdrojové hodnoty tahají ze skrytého listu. Nad tím uděláte všechny ty hezký věci jako grafy, zvýraznění a tak.
Pak už jenom váš program zkopíruje zdrojový excel pod novým jménem. Naplní do listu hodnoty z výstupu. Uloží a nakopíruje do výstupní složky.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: kanoe22 21. 11. 2022, 16:44:51
Vzhladom na to ze otazka je o exceli, tak predpokladam windows.
Problem windowsu je to ze by default nema nainstalovany python, R, ...

Cize ak ten excel bude pouzivat veci ktore nie su nainstalovane na PC, tak na pc u niekoho ineho (non dev osoba, napr sekretarka, manager, zakaznik) to proste chcipne. A asi nechcete niekomu posielat mail stylom:
"...v prilohe najdete excel subor. Pre jeho spravne fungovanie prosim este nainstalujte na svoj pc python podla navodu na prilozenom linku.

S pozdravom,
UrciteNieVirus
"

Co si myslite ze sa s takym mailom stane?

Cize jedina pouzitelna nahrada je bud pouzit excel, alebo pouzit nieco mimo excel co je ale zarucene nainstalovane na PC -> napr nieco co bezi nad .net frameworkom, alebo sa spolahnut ze je tam nejaka java (vacsinou na pracovnych pc bezi nieco na jave, cize tam je).

Problem tichto externich rieseni je niekedy este aj vacsia krkolomnost ako (excel) nativne riesenie. Plus vykonova penalizacia za prenasanie dat medzi x separatnymi prostrediami, co vzhladom na jednoduchost ulohy (zaokruhlovanie hodnot) je zbytocnost.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Karmelos 21. 11. 2022, 16:58:57
to kanoe22

No hlavně tazatel neupřesnil, co přesně tím VB chce vlastně dosáhnout.

Například můj postup odchodu od práce v excelu byl nejprve Matlab, nedostatek licencí mě donutil to přepsat do R a vyšší komplexita plus absence jednoho api k proprietární knihovně pak vyústil v Python. 

A v podstatě výsledkem je stejná sada grafů, dokonce jsem si i natípal barevné schéma, aby to mgmt nedráždilo...
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: mikrom 21. 11. 2022, 17:15:42
...
Cize jedina pouzitelna nahrada je bud pouzit excel, alebo pouzit nieco mimo excel co je ale zarucene nainstalovane na PC -> napr nieco co bezi nad .net frameworkom ...
...
ano z toho dovodu pouzivam este stale VBscript, zatial je vsade (neviem sice ci aj na W11)
Skusal som aj powershell, ale na programovanie mi to pripada horsie ako VBscript a hlavne tam byvaju komplikacie so spustenim: treba bypasovat ExecutionPolicy a teda ku skriptu prikladat aj prikaz ako ho spustit.
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Mudvy 21. 11. 2022, 21:22:39
Můžeš C# jak už kolega výše zmínil. Hledej VSTO. Ale je to docela opruz, protože to je jen wrapper nad COM objekty, takže třeba Watch window nefunguje při debugování a asi se toho nejde víc.

Presne tak. Po C# excel kod je potreba napsad kod nejdriv v vba, odzkouset a potom ho prepsat do C# (volani COM objektu je vicemene stejne jako ve vba). Vyplati se to jen, pokud je komunikace s excelem podruzna vec a cela hlavni logika je napsana v c#. Treba na export dat do excelu. Pripadne jako jednotne klikatko spoustejici ruzna mala excel makra.

Jak tohle muze nekdo napsat. Je nesmysl nejdriv psat vba a pak z toho delat c#. Rovnou pises c# neni na tom nic zazracneho

Pokud ti nevoni vba tak to vsechno pis v C# nebo VB. Udelej si bud konzolovku nebo rovnou jednoduchy winform a pokud chces byt dobrodruznejsi tak wpf appku.

Inspiruj se treba tim ze si makro nahrajes v excelu, tim ze si to naklikas ruco, aby si mel predstavu jake objekty pouzivas a pak si z toho postav vlastni logiku.

Jen nepouzivej v zadnem pripade to co ti nahraje makro. Dela tam spoustu veci pres selecty a to je naprosto zbytecny a super pomale. Navic se to muze chovat nepredvidatelne.

Postup je snadny
pozijes visual studio community
zalozis treba winform na frameworku 4.8
Nareferencujes si excel knihovnu
Vytvoris nebo chytnes com object excelu (ve VB je to GetObject(Class:=“Excel.Application”))
A stav svoji logiku
Pak to dej na tlacitko

Vyhody - mas kvalitni debug, naseptavani a prace s objekty excelu pokud nejsi lem… a nepouzivas late binding, hezky barevne odliseni v kodu a mnoho dalsich vyhod moderniho ide oproti vba ide.

Samozrejme si to vsechno muzes vymyslet do dll kterou volas z vba, ale na to uz potrebujes lepsi schopnosti.

Jen tak mimochodem i v tom vba ide se daji psat komplexni procesy na 20 000 radku a neni to tragedie.

Vyhody oproti manipulaci pres com je asi v deseti nasobne rychlosti operaci a to je nekdy pokud mas nekolika minutove operace vyhra oproti programu co excel ovlada pres com.

Muzes to i kombit ze c# vygeneruje vbascript a ten spustis z excelu a taky to pekne frci 🙂

Tech cest je spousty …
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: alex6bbc 21. 11. 2022, 21:34:50
takze nakonec je nejjednodussi psat visual basic primo v excelu :-)
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Mudvy 21. 11. 2022, 22:03:56
takze nakonec je nejjednodussi psat visual basic primo v excelu :-)

Jen si prosim nezamenujte vb a vba. Je to velky rozdil.


Vba co je v excelu a vsude jinde v integrovanych ide je zalozeny na verzi 7.1

Visual basic ve visual studiu je verze 16.9

V podstate se da rict ze co muzu v dnesnim c# muzu i v posledni verzi vb.

Pouzivat vba v excelu je cestovani v case do roku 2003
Název: Re:Alternativa za Excel Visual Basic?
Přispěvatel: Ovrscout 22. 11. 2022, 08:45:42
Pokud je třeba opravdu programovat (např GUI klikátka, in place modifikace atp), tak bych se tomu asi vyhnul a udělal normální program mimo excel.
Větší věci (s pár jsem se uživatelsky setkal) mají tendenci se rozbíjet přo aktualizacích.

Pokud by stačila transformace - to co je v prvním příspěvku (nahradit hodnoty ve sloupci nulou pokud absolutní hodnota je menší než 0.1) by se dalo udělat v powerquery který je  součástí excelu už pár let.
Není to ale vb/vba programování, spíš je to trochu podobné sql dotazování - místo modifikace tabulky v místě, jde vlastně o dotaz který je směrován do své vlastní tabulky, kterou ale lze aktualizovat, podobně jako kontingenční tabulka.
A powerquery toho umí ještě mnohem víc (externí soubory/databáze spojování tabulek,....)