Ale k vytvoreniu novej inštancie predsa neprichádza pri každom teste. Vytvorí sa iba:
1. pri otvorení súboru
2. ak ju Excel zruší, alebo ju zrušíme my manuálne (Quit+Nothing), tak ako ste dal príklad, tak pri najbližšom použití premennej xlApp, si ju Excel vytvorí sám, a iba jednu. Nech pozerám do Správcu úloh ako chcem, tak tam vidím "Microsoft Excel" iba raz. Druhý proces "Microsoft Excel" je už samotný súbor v ktorom pracujeme. Takto sa to správa na mojom Excel 2013. Takže podľa Správcu úloh, žiadneho úbytku pamäti, rýchlosti vykonávania, si nemyslím, že každé volanie vytvára inštanciu, ani nieje u mňa problém pri zmazaní inštancie.
Ak sa to dá overiť ešte inak, pls poraďte.
Podstatné zlepšenie výkonnosti makra spočíva v nevytváraní Excel.Application pri každkom prepočítaní listu pre každú bunku, ale použiť globálnu premennú, a tú v Before.Close zrušiť. Riziko pádu aplikácie a toho, že ostane v pamäti vysieť inštancia Excelu, je rovnaké ako v predošlom prípade, ale neporovnateľne svižnejšia odozva. Takto sa to používať dá.
A ak by niekoho ešte zaujímalo prečo to ExecuteExcel4Makro najskôr mne nešlo sprevádzkovať, tak to bolo práve v tom, že som nepoužil novú inštanciu Excel.Application. Vo funkcii to bez toho nefunguje v procedúre áno.
Dotaz znel, porovnať stĺpec A jedného súboru so stĺpcom C druhého súboru. Presne takú odpoveď dostal. Podľa mňa sa tým už Vážne nemusíme zaoberať. Ale keď sa Vám ešte chce, tak prečo nie. Vždy je sa čo učiť.
Ešte raz zopakujem, že toto riešenie s prepojovacími vzorcami som dotyčnému poslal hneď v prvom mojom príspevku, druhý príspevok celkovo, odoslaný 1.9.2015 21:39. Proste hneď na začiatku prvá rada, prvé riešenie a prvá príloha.
K tomu makru. Vyťahovať cez ExecuteExcel4Macro údaj, a ten vložiť do listu, odtiaľ čerpať údaj do podmieneného formátovania je úplná hlúposť, na to sa má použiť vzorec. Celá debata nieje o vytiahnutí dát s použitím ExecuteExcel4Macro, ale o použití ExecuteExcel4Macro v Podmienenom formátovaní. To sa mi podarilo aj na základe Vašej pomoci rozbehať. Trošku som upravil parametre, aby to bolo rovno použiteľné v formátovaní na viaceré bunky. Takéto použitie spôsobuje ohromné lagy už na 14-tich riadkoch. Takže toto rovno zavrhnime.
Skončime to tým, že jediná rozumná možnosť je tá na ktorej sme sa zhodli, všetci (okrem pýtajúceho sa ), s použitím dolovacieho stĺpca (živého stĺpca, pomocného stĺpca, prepojovacieho stĺpca, alebo akokoľvek inak to nazývate), či už v samostatnom liste, alebo v skrytom stĺpci toho istého listu, ako som to predviedol v prvom príspevku.
PS: V Priložených súboroch si samozrejme v Definovanom názve zmente cestu.
Najjednoduchší variant je dolovací stĺpec, ktorý som uviedol hneď na začiatku a je funkčný.
Obe fnc, čo tam sú, sú rovnaké, iba GetValue_1 má kontrolu chyby. Obe na Office 2013 SK x64 Pro a na Win 8.1.1 x64 vrátia "Error 2023" (akurát prvá to nazve "L1 - list nenalezen"). Je jedno či je zošit otvorený alebo zatvorený. A navyše žiaľ rýchlosť vytvárania objektu Excel.Application je ťažká brzda. Je jedno, či voláte GetValue priamo z listu, z Definovaného názvu alebo z Podmieneného formátovania. Rovnaký výsledok.
Presne takto som sa to pokúšal riešiť aj ja v predošlých príspevkoch.
Buď robím niečo zle, alebo mám pošahaný Excel, alebo to nefunguje. Môžete dať prosím takýto ScreenShot obrazovky, kde budete mať kurzor na B11?
Nie, nie. Nefunguje. Ak Vám áno, dajte prosím prílohu, kde to máte v podmienenom formátovaní.
Pravda. Rovnaké riešenie som navrhol pár tém dozadu, o porovnaní 2 zošitov, ale žiaľ bez odozvy. Akurát ja som to nazval "Dolovací stĺpec". Uvidíme, či bude (ne)reakcia tu.
3 riadky pod posledným obrázkom je text:
Evidenci spotřeby a nákladů auta stahujte zde: excel_provoz_auta.xls.
Tu máte všetky 3 spomenuté verzie, vyberte si. Zo zatvoreného zošita mi to ale číta len ten pôvodný.
Aby ste sa teda netrápil ... tak nápoveda tu
Alebo to naindexujte
=SVYHLEDAT(AD7;INDEX('[celý rok2014.xlsm]přek_kap_vyd1'!$Y:$Y;ZAČÁTEK):INDEX('[celý rok2014.xlsm]přek_kap_vyd1'!$AG:$AG;KONEC);9;FALSE)
Skúste zmazať data prehliadania (Cookies). Mne to robí tiež, neudrží tuším ani hodku.
3 čiarky - Nastavenia - Zobraziť rozšírené nastavenia - Odstrániť údaje prehliadania - Súbory Cookie a ďalšie údaje webových stránok a doplnkov - Vymazať údaje prehliadania.
Ja Vám nerozumiem.
Prvý variant (oblasť AND oblasť) :
Chová sa to presne tak ako ste požadoval.
A1=text1,skryj sloupce B,C
A2=text2,skryj sloupce B,D
text1, 1 řádek - OK, schová se 1 sloupec
text2, 2 řádek - schovají se sloupce 2-4, ale neobnoví se sl 1
text1, 3 řádek - zůstane nastavení sloupce 2, nic se nestane
Vzdávam to, nijako sa mi nedarí pomocou ExecuteExcel4Macro vytiahnuť data zo zatvoreného zošita vo funkcii. V procedúre bez problémov, ale akonáhle je to fnc, dostanem #HODNOTA. Skúšal som volať fnc s ExecuteExcel4Macro
-priamo z vzorca
-nepriamo cez Definovaný názov
-nepriamo cez vnorený Definovaný názov
-priamo zo vzorca volal fnc ktorá volala sub s ByRef argumentom pre zápis hodnoty, a ten ako výsledok fnc
-uloženie ako xlsm
-nepriamo fnc volá fnc
...
Akonáhle vymením fnc za sub, má regulérny výsledok. Ale fnc nie.
Týmto končím, a už sa tomu nevenujem
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.