Zápis do .csv sa dá úspešne riešiť pomocou statementu Open. Bližšie info napr. tu: https://msdn.microsoft.com/en-us/library/office/gg264163.aspx
Spôsob použitia potom napr. tu:http://www.homeandlearn.org/write_to_a_text_file.html
Pokiaľ by som mal problém vyriešiť ja, tak by som sa v prvom rade zamyslel nad tým, či by nebolo lepšie dáta zapisovať na jeden list a z neho potom tvoriť samostatné listy pre jednotlivých pracovníkov - t.j. presne opačný koncept, než je použitý v zadaní. O dôvodoch, prečo to má vyzerať, ako navrhujem, sú popísané spústy stránok.
V prípade, že by ale nebolo možné postupovať hore načrtnutou cestou, tak by som asi zapojil MS Query s jednoduchým zjednocovacím dotazom, ktorého možný základný tvar, ktorý je ďalej modifikovateľný, by bol nasledujúci:SELECT *
FROM `List2$`
UNION ALL
SELECT *
FROM `List3$`
UNION ALL
SELECT *
FROM `List4$`
UNION ALL
SELECT *
FROM `List5$` . Jeho vytvorenie trvalo cca 2 minúty, za tak krátku dobu, obávam sa, nikto funkčné makro nenapíše, to samé by platilo i o riešení cez vzorce. Napísanie odpovede mi zabralo viac času, než samotné vytvorenie uvedeného dotazu v MS Query.
Ešte dodám, že príklady rôznych riešení konsolidácie dát má na svojich stránkach veľmi dobre popísané Ron de Bruin, takže pokiaľ máš záujem, môžeš študovať a niečomu sa priučiť, stojí to za námahu, tuná: http://www.rondebruin.nl/win/section3.htm
Nie je. Je to napísané i priamo v dialógovom okne podmieneného formátovania - môžeš meniť štýl, podtrhnutie, farbu a preškrtnutie. Voľba veľkosti fontu je šedivá, ani font samotný cez podmienené formátovanie nejde zmeniť.
Prípadne s nevolatilnou fn Index
=MID(INDEX(import56!AB:AB;7; 1); 1; 2)
O.k., možný postup:
1. Pomocou funkcie dir testovať v cykle existenciu súborov (.xls alebo .xlsx) v danom adresári
2. Vo vnútri cyklu:
súbor otvoriť, testnúť existenciu listu BOM
pomocou funkcie countif vyhodnotiť prítomnosť hľadaného reťazca v oblasti c5:c19
pokiaľ je hľadaný reťazec prítomný, zapísať hodnotu bunky F2 (neuvádzaš, kam sa má hodnota zapisovať, takže to popisujem schematicky, súbory fakt tvoriť nebudem), súbor zavrieť a vyskočiť z cyklu (viď. bod 1)
3. pokiaľ podmienka z bodu 2 nie je splnená, zavrieť príslušný súbor a pokračovať v cykle (bod 1) spracovaním ďalšieho súboru.
@JC-Group
Mám dojem, že príspevok odporuje pravidlám fóra, konkrétne:
Pravidla a návod, jak správně vkládat příspěvky. Příspěvky s vulgárními výrazy, warez, spam, komerční reklama a jiné příspěvky, které jsou v rozporu se slušnými mravy budou odstraněny. V krajních případech bude být uživateli udělen BAN.
Je to ale čisto môj názor, je možné, že sa v skutočnosti nejedná o komerčnú reklamu. Každopádne ale, uvedené stránky na mňa osobne nepôsobia dojmom, že by dokázali niekomu pomôcť.
Mám za to, že tuná sa riešilo niečo podobné:http://wall.cz/index.php?m=topic&id=25883
@ eLCHa
ešte som sa k tomu nedostal, bohužiaľ. Ozvem sa, akonáhle to bude možné
Asi by si mal vziať do úvahy, že excel súbory môžu mať i viac, než jeden list, teda v prípade, kedy preferuješ slovný popis zadania pred uverejnením tajných príloh .
Budeš musieť list odomknúť, nastaviť vlasnosť príslušnej oblasti buniek Locked na False, následne povoliť triedenie na zamknutom liste, bližší popis viď tuná:https://msdn.microsoft.com/en-us/library/office/ff839266(v=office.15).aspx
Tu je príklad umožnenia triedenia v oblasti K8:K40:Sub Test()
With ActiveSheet
.Unprotect
.[K8:K40].Locked = False
.Protect userinterfaceonly:=True, AllowFiltering:=True, AllowFormattingColumns:=True, AllowFormattingCells:=True, _
AllowSorting:=True
.EnableOutlining = True
End With
End Sub
Dnes mám dovču, vyskúšam zajtra, ďakujem.
Nakoniec som na to prišiel - tipoval som správne na nutnosť late binding; nakoľko by sa to mohlo niekomu hodiť, tak tu je moje riešenie:Sub SapOds()
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\al057494\Desktop\pom.ods", FileFormat:=xlOpenDocumentSpreadsheet
xl.Application.DisplayAlerts = True
Set xl = Nothing
End SubMá to ešte jednu chybku na kráse, a to je, že neviem prísť na to, ako programovo zabezpečiť úplný rozpad výkazu (sapia skratka Shift+F9) pred jeho uložením do .ods. To zatiaľ robím ručne, pokiaľ má niekto šikovný skriptík na toto, tak sem s ním.
Ahoj,
report v SAP report writeri, pokiaľ sa zobrazí v Exceli v okne SAP - po vykopírovaní do Excelu metódou COPY/PASTE (mimo SAP) sa zmení paleta farieb a to tak, že brutálne. Toto je známy problém spôsobený tým, ako je to v SAPe naprogramované.
Uvedené sa dá obísť tým, že sa súbor uloží v SAP/Excel okne ako .ods a v Exceli (mimo SAP) sa potom otvorí tento .ods súbor, ktorý tentokrát zobrazí pôvodnú paletu farieb. Na toto som si nahral jednoriadkové makro:Sub SapOds()
ActiveWorkbook.SaveAs Filename:="C:\Users\al057494\Desktop\pom.ods", FileFormat:=xlOpenDocumentSpreadsheet
End SubV podstate funguje bez väčších problémov až na jeden detail: Ukladám vždy do jedného a toho samého pomocného súboru na ploche, takže súbor existuje a pri SaveAs pochopiteľne vyskočí hláška s upozornením, že súbor existuje a treba potvrdiť jeho prepísanie. Tú hlášku by som rád eliminoval, ale tradičné Application.DisplayAlerts = FALSE / TRUE skončí chybou. Makro spúšťam zo Sapieho Excelu (z Excelu v SAPom okne), uložené je v Personal.xls. Takže, milí sapáci, vedel by niekto, čo s tým? Predpokladám, že to bude pravdepodobne spôsobené potrebou nastavenia referencií, alebo použitím pozdnej väzby, ale trochu tápem a spolieham na to, že možno niekto pozná jednoduché riešenie..
Videl by som to na kombináciu funkcií MIN a IF, ale súbor tvoriť nebudem, pokiaľ píšeš, že ho máš, tak sa zaregistruj a vlož ho sem.
Odpoviem za kolegu, ktorý už zrejme touto dobou spí: zmyslom &" - "& je oddeliť (vizuálne ale i logicky), dva spájané reťazce; bez použitia &" - "& by sa totiž v istých prípadoch mohlo stať, že spojením dvoch nerovnakých dvojíc by vyšiel ten samý výsledok, čo môže viesť k neočakávaným problémom, príklad:
1.
reťazec A1: PrvýDruhý
reťazec B1: Tretí
2.
reťazec A1: Prvý
reťazec B1: DruhýTretí
Za použitia A1&B1 by v oboch prípadoch bolo výsledkom PrvýDruhýTretí, zatiaľ čo za použitia A1&" - "&B1 to bude výsledok rozdielny pre prvý a druhý príklad. Spojovník teda slúži k vizuálnemu oddeleniu a zároveň (a to je to podstatnejšie) k eliminácii možnej chyby.
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.