@mati:
Původní soubor je zde: http://wall.cz/index.php?m=topic&id=24118&page=1#posts
A ano, je od elninoslov a na začátku vlákna to kvůli autorský mprávům i zmiňuji Mimochodem, byl stažený 265x
Makro v originální verzi: po stisku talčítka "Pridaj" si mohu vybrat adresář. Z tohoto adresáře (a všech podadresářů) načte všechny soubory. Ve sloupci D si pak mohu jednotlivé soubory přejmenovat a po stisknutí tlačítka "Premenuj" se tak stane.
CMM-Team měl problém s přejmenováním souborů, tak jsem mu navrhl toto makro, kde jsem udělal jedinou úpravu a to tu, že se při načítání všech souborů automaticky vymaže vše od podtržítká doprava. Automaticky se i "zmáčkne" tlačítko Premenuj a soubory se na disku i přejmenují.
Ještě by se tam mohlo doplnit i automatické zavření souboru, ale nevím, jaké přesné plány s tím CMM-Team má, tak jsem to nechal otevřené i pro případnou kontrolu názvů.
Shrnutí:
- originál načítá všechny soubory z vybraného adresáře a všech podadresářů
- v buňce G6 je omezení na maximální počet souborů 1000 a to si může změnit každý sám
- v originále si soubory přejmenuje každý sám a to ve sloupci D
Stačí takto?
načteno 700 souborů za cca 5 vteřin.
A jaký problém nastane?
Pokud je 7 a 8 název listu, tak musí být v uvozovkách.
Tak to je fakt moc. Já to teď nemám jak vyzkoušet, možná večer. Jestli máte čas můžete zkusit všechny verze. První originál, druhá co neumí soubory bez podtržítka a třetí, co zvládne i soubory bez podtržítka. A porovnat čas zpracování.
A nebo přiložte váš soubor.
A co zkusit: Range("B1").Value = Cells.(Compld.Row, 3).Value
A je to pomalé až po té poslední úpravě? A nebo to trvalo dlouho i předtím?
Já jsem to zkoušel asi na deseti a bylo to hned. Ale bylo to před tou poslední úpravou. Možná se pletu, ale na rychlost by to nemělo mít podstatný vliv. Teda určitě ne na pár souborech.
Tak místo
NoveNazvy(i) = Left(StareNazvy(i), InStr(1, StareNazvy(i), "_", vbTextCompare) - 1)
Použijte toto:
If (InStr(1, StareNazvy(i), "_", vbTextCompare) - 1) > 0 Then
NoveNazvy(i) = Left(StareNazvy(i), InStr(1, StareNazvy(i), "_", vbTextCompare) - 1)
Else
NoveNazvy(i) = StareNazvy(i)
End If když název nebude obsahovat podtržítko, zůstane nový název stejný jako starý
Co kam kopírovat? Z buňky do buňky:
List1.Range("A1").Value = List2.Range("A1").Value
Přidal jsem do makra dva řádky.
Do funkce GetAllFiles jsem přidal automatické smazání všeho od podtržítka do konce názvu: NoveNazvy(i) = Left(StareNazvy(i), InStr(1, StareNazvy(i), "_", vbTextCompare) - 1)
Pak jsem na konec procedury Sub Pridaj_Click() přidal volání procedury Premenuj_Click. Tato procedura se spouští po stisku tlačítka Premenuj
Takže po stisku tlačítka +Pridaj se objeví okno pro výběr adresáře. Po výběru adresáře se soubory načtou do excelu a hned přejmenují i na disku.
Já myslím, že to předělávat nemusíte.
1. načtete všechny soubory z vybrané složky do sešitu.
2. Změníte si názvy souborů ve sloupci D podobně jak popisoval Nomi u Total Commanderu.
označím si sloupec D9:D?? - názvy souborů
Ctrl+H
V dialogovém okně zadám: Najít: _*
Nahradit: nechat prázdné
Po přejmenování ve sloupci D se po stisknutí tlačítka přejmenují soubory na disku.
zkuste toto:
http://wall.cz/index.php?m=topic&id=24118&page=1#posts
Mě teda vůbec ni nenapadá. Nevidím tam žádnou logiku. Nic čeho bych se mohl chytit.
Dotaz:
Jak se to bude zpracovávat? Dostanu najednou hromadu produktů (viz příklad) s Již zadanou cenou a s Novou cenou třeba za jeden rok a to se zpracuje?
Nebo se průběžně doplňuje Již zadaná cena a Nová cena a po zadání Nové ceny se přidá výsledek...
Prostě potřebuji znát postup, jak vznikne/vzniká soubor, který se má zpracovat.
Buď jsem blbý já nebo je blbý příklad.
Píšete, že přednost má nová cena a přitom ve výsledku uvádíte Novou cenu.
Proč není u produktu 1 cena 8,3, která je nejnižší?
Proč jsou u produktu 1 je dvě rozmezí data a navíc na sebe ani nenavazují.
Předpokládám, že rozmístění bude jiné, než je v příkladu, protože není nikde prostor na zápis více produktů. Příklad má vycházet z reálné situace.
1) Opraveno (místo i=1 musí být i=21)
2) AE se odemkne jen když je U:Z vyplněno VIP hodnotou a v AA je cokoliv
3) Všechny buňky kromě sloupce AE jsou odemčeny. Tzn. i při zamknutém listu se bude moci psát do kterékoliv buňky (Mimo celého sloupce AE).
2)
Mám vyplněné U:AA, všechny data jsou VIP a proto je AE odemčené. Smažu obsah AA. Co udělá buňka AE:
a) zamkne se
b) smaže se a zamkne
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.