Je to urobené tak, že proces odoslania sa vyvolá vždy po uložení zošitu. Taká bola požiadavka. Ale vždy sa opýta, či chcete odoslať. Samovoľné odosielanie? A bez otázky? Skúsim zajtra overiť tak, že nechám súbor otvorený pár hodím...
Snáď myslíte toto:
Choďte na G2
PF nastavte na
=G2="A"
Oblasť nastavte na
=$G$2:$P$41
To isté pre B aj C
Prepnite si na zobrazenie všetkých pravidiel v liste, a zmažte ostatné, len tie upravené 3 nechajte.
EDIT:
Aha moment, Vy v riadkoch 4,5 kontrolujete hodnotu z riadku 3? a následne obdobne v riadkoch 8,9 kontrolujete hodnotu v riadku 7? ...
V tom prípade postavte sa na G2 a do PF dajte niečo podobné:
=INDEX($G:$P;INT((ROW()-2)/4)*4+3;COLUMN()-6)="C"
=INDEX($G:$P;CELÁ.ČÁST((ŘÁDEK()-2)/4)*4+3;SLOUPEC()-6)="C"
Odosielací mail sa zvoliť dá, no musíte ho mať niekde zadaný. Netuším, ako inak by mal Excel vedieť z akého mailového účtu bol súbor stiahnutý...
Stačí formát
General;General;;
To je príklad často spomínanej nepresnosti Excelu, a všeobecne PC, lebo nie vždy im sedí prevod desatinných čísel do ich binárneho kódu. My vieme že 9,05 - 9 = 0,05 ale jemu vychádza 9,05 - 9 = 0,0500000000000007. Niekde to musíte zaokrúhliť. Prerobte si teda v celom stĺpci I na liste 1 vzorec z
=D13+E13-G13na
=FLOOR(D13+E13-G13;0,05)
=ZAOKR.DOLŮ(D13+E13-G13;0,05)EDIT: Teda samozrejme nemyslím úplne celý stĺpec I, ale len tú časť, kde sa počíta so zaokrúhľovaním na 0,05 litra. Kávenky asi tažko
To je zase niečo úplne iné. Ak odosielate celý zošit tak ako je, tak nepotrebujete žiadnu druhú inštanciu Excelu, ani filter listov, ani dočasné premenovanie súboru, aby ste mohli použiť rovnaký súbor, a podobné featurky. Takže predpokladám nieje v tom prípade ani žiadny list adresár. Tak potom takto jednoducho.
Nerozumiem. Takže sa nemajú posielať listy ako samostatné súbory, ale poslať sa má celý zošit tak ako je? To odporuje vete "zrusit odosielanie konkretneho harku". Alebo chcete význam stĺpca B, ktorý je teraz "odošli len tento", zmeniť na význam "odošli všetky okrem tohto" ?
Určite nechcete nič nemožné, len nerozumiem presne čo potrebujete.
Konkrétne riešenie záleží zase na ďalších veciach, či sa má pýtať na odoslanie pri uložení, či má ostať zachovaná možnosť odoslať na tlačítko (potom treba kontrolovať či nenastalo uloženie z odosielacieho makra, lebo by sa odoslalo 2x), a pod. Tu je príklad.
OT:
"Elminoslav" ?
Elnino - ako tie výkyvy počasia čo často spôsobujú katastrofy, povodne a pod.
Slov - ako že som zo Slovenska
elninoslov - píše sa to na prd, a skloňuje ešte horšie...
Stačí elnino, a bez toho "pán"
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
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...
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.