Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  80 81 82 83 84 85 86 87 88   další » ... 298

Tomu neverím. Premenujem si súbor napr. na "blbina.xlsm". Otvorím ho. Nastavím si v makre .Display, nech mi zobrazí správu. Spustím makro.
Normálne to vytvára v užívateľskom Tempe súbor "tmp_blbina.xlsm" a pre každý list "blbina.xlsm", ktorý je v každom maile priložený.
Pozerám na to, preto Vám neverím.
Slovo "test" sa v mojom makre ani nevyskytuje. Ak spustíte makro v priloženom súbore mail.xlsm, tak bude príloha jednotlivých listov mail.xlsm, a nie test.xlsm.

Zapnite si .Send alebo .Display

Tak bohužiaľ, nič nezaberá. Podobný problém som našiel aj na nete, no riešenie nie. Zaujímavé je, že ak makro spustím ručne vo VBA, tak nepreblikne, ale akonáhle ho pustím z tlačítka listu tak preblikne. Presne na tom Save.
Inak GetObject(súbor) je rýchlejšie ako CreateObject("Excel.Application"), žiaľ súbor zostane po uložení neviditeľný a nejde viditeľne otvoriť užívateľom (otvorí sa následne už len skryto). Obísť sa to dá iba nastavením ...Windows(1).Visible=True pred uložením, čo Vás vráti k počiatku prebliknutia 5
Takže celé na prd...

Tak namiesto CreateObject najskôr otestujte, či sa v kolekcii otvorených workbooks už nenachádza Váš zošit, ak áno, iba ho priraďte do premennej, ak nie, tak ho potom prežeňte cez CreateObject. Poznamenajte si do pomocnej premennej boolean či ste ho otvárali (true) alebo bol otvorený (false). Na základe toho na konci procedúry vykonáte uloženie, alebo uloženie a zatvorenie. Príp. priložte prílohu, nech to testneme...

Do vedľajších buniek všetky pod seba rozloží na riadky
Sub SPLITJOIN()
Dim RNG As Range, A()
Set RNG = Worksheets("List1").Range("B9:B20")
A = Application.Transpose(Split(Replace(Join(Application.Transpose(Application.Index(RNG.Value, 0, 1)), Chr(10)), Chr(13), ""), Chr(10)))
RNG.Offset(0, 1).Resize(UBound(A, 1)).Value = A
End Sub

Do vedľajších buniek, všetky vloží so zámenoou riadkovania za ". "
Sub REPLACESPLIT()
Dim RNG As Range, A()
Set RNG = Worksheets("List1").Range("B9:B20")
A = Application.Transpose(Split(Replace(Replace(Join(Application.Transpose(Application.Index(RNG.Value, 0, 1)), "•°"), Chr(13), ""), Chr(10), ". "), "•°"))
RNG.Offset(0, 1).Resize(UBound(A, 1)).Value = A
End Sub

Musí sa tam riešiť, ako vidieť, aj Enter (kód 13).

Každopádne toto je skrátená verzia, lebo Transpose funguje iba do 32767 prvkov poľa. Ak ich má byť viac, urobíme cyklus. Poskúšajte.

Skôr si myslím, že by to malo byť takto nejako. Prerobené, lebo podľa mňa nedávalo zmysel, ak bol Info vypísaný ak bolo CSV vyhodnotené ako validné. Pochybujem, že Vám bude dátumovo sedieť poradie Info a CSV v jednom riadku :) Takže takto cez podprocedúry vykoná to isté a oboch poliach. Teda samostatné výsledky. Prerobené aj načítanie súborov.

PQ je od Office 2016 vrátane priamo integrovaný, a do v. 2010 a 2013 je origo free doplnok. Mrknite na menu Údaje - Dotazy a pripojenia, potom vpravo musíte vidieť dotaz PQDataTab - dvojklik - môžete ho upravovať buď tlačítkami alebo v Domov - Rozšírený editor, priamo editáciou M-kódu.
Tento PQ dotaz naťahá data z CSV (cesta je uvedená v oranžovej Tabuľke na liste "zak") do dátového modulu. Dátový modul už používa tá KT. V dátovom module som ešte urobil reláciu na tú Tabuľku ZakTab.
Použitie je jednoduché:
1. Podľa potreby zmeníte cestu v súboru CSV v oranžovej Tabuľke.
2. Aktualizujete KT.

Samozrejme predpokladom je, aby som vedel ten PQ dotaz správne nastaviť, potrebujem vidieť datovú štruktúru CSV. Môžeme to skúsiť, len potrebujem CSV aspoň s 1-2 riadkami dát (vymyslených, ale zachované typy dát).

Snáď uvažujem správne...

Zajtra ešte na to snáď mrknem. Brú noc.

Predpokladám, že pôjde o limit Excelu, čo sa dĺžky prehľadávaného textu týka. Ak text skrátim nájde ho. Obíďte to tak, že si dajte pomocný stĺpec so vzorcom, kde to nahradíte, skopírujete výsledok a dáte vložiť ako hodnotu.
=SUBSTITUTE(A1;$D$1;$D$2)
=DOSADIT(A1;$D$1;$D$2)

Pre vkladanie príloh sa musíte zaregistrovať. Ak sa jedná o XLSM tak zabaliť do ZIP/RAR.

Ak sa jedná o html, a hľadáte text s medzerami, pravdepodobne sa bude jednať o pevnú medzeru kód 160 a medzeru kód 32. Príloha?

príklad bez makra (ale csv som si vymyslel!)

To by som dal cez PQ do dátového modelu, a ten ako zdroj pre KT. urobil som si skúšobnú tbl s 300K a akýkoľvek spôsob mazania náhodných cca 160K riadkov je utópia. Problém je dostať sa čo i len cez blok 2K riadkov. Ten posun ostatných buniek je ohromne náročný. Teda by som to spravil cez PQ.
Dokonca ak máte ten CSV importovať, tak to by som urobil rovnako cez PQ.

Ak tomu teda rozumiem správne. Máte nejaký exportovaný CSV z Vášho systému, ktorý potrebujete spracovať. Tak nechajte ten CSV spracovať rovno cez PQ, a na ten PQ dotaz napojte KT s už odfiltrovanými "0" (to urobí to PQ). Ak je to tak, a ak môžete, tak upravte ten Váš CSV na napr. 3 dátové riadky s vymyslenými údajmi, ale so zachovaním formátu dát. A spravíme na to PQ.

Workbook_Open - spúšťa sa pri otvorení zošitu.
Workbook_BeforeClose - spúšťa sa pri zatvorení zošitu
Ktoré makro ste použila? Obidve? Potom sa nečudujte, že Vám uloží pri zatváraní. A predpokladám, keď tam máte obe, že ste zmenila cestu iba v jednom makre, nie v druhom.
Môj súbor ste skúsila?

Nemohol by ste poslať na ukážku súbor s vymyslenými 5 riadkami dát a zachovanými vzorcami ? Ja by som si z toho už tých 300K odvodil a skúsil odkrokovať, čo trvá najdlhšie. Koľko asi riadkov sa takto maže? Tisícky? Desaťtisícky? Stotisícky? Lebo aj pridávanie oblasti k celku postupne spomaľuje, a značne, tak by sa to spravilo po častiach.


Strana:  1 ... « předchozí  80 81 82 83 84 85 86 87 88   další » ... 298

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje