Úvodní stránka · Fórum · Ke stažení · Odkazy · Links (EN, DE, CZ, SK) 10. září 2010, Irma
Menu
Úvodní stránka
Časté dotazy k Excelu
Fórum
Kategorie článků
Databanka kódů
Ke stažení
Svět Excelu v RSS
Odkazy
Kontakt

Excel - funkce na listu
Excel - funkce VBA
Excel - klávesové zkratky
Excel - znaky, klávesnice
Excel - standardní barvy
Excel - slovník menu
Excel - konstanty
Excel - technické údaje
DVD Servis Office
Excel menu 2003 (Ribbon)
Offset Statistic

Chat
Sponzorované odkazy
Přihlášení
Přezdívka

Heslo



Nejste členem?
Zaregistrujte se co nejdříve.

Zapomněli jste heslo?
Nechte si poslat nové.
Kdo je online
Hosté online: 2
Žádný člen není online

Registrovaní členové: 537
Neaktivovaní členové: 47
Nejnovější člen: Veverka
Pohotovost Excel
Excel VBA - první pomoc

ICQ status

Skype
Hry online
Sudoku
Sudoku
Sudoku
Sudoku
Excelplus.NET
Excelplus.NET - RSS 0.91 spampoison.com
Google Pagerank - excelplus.netGoogle Pagerank Antispam.er.cz
Statistiky

Excel (2007) - vlastní export tabulky do DBF

TipyPřestože má formát souboru DBF své již odslouženo, řada uživatelů byla nepříjemně zaskočena nepodporováním tohoto typu v rámci exportních funkcí Excelu 2007. V tomto článku si ukážeme, jak vygenerovat tabulku formátu dBase III.



Ačkoliv mě daný problém až tak netrápil, dlouho jsem hledal nějakou aplikaci zdarma, pracující i stylem příkazové řádky, která by zvládala konverzi zdrojových dat do DBF. Našel jsem pouze jedinou použitelnou - TXT2DBF. Ta umí převádět textový soubor do dBase III. Co to znamenalo pro další postup?

Obecně:
1) Vygenerovat textový soubor s pomocí VBA.
2) Převést s pomocí utilitky TXT2DBF textový soubor do formátu DBF.

Zpracovat textovou podobu tabulky jsem již dokázal - viz článek Vygenerování tabulky Excelu v čistě textové podobě.

Znovu jsem si prostudoval i pravidla pro DBF soubory ve vztahu k Excelu 2003 (Excel 2003 - Při uložení dat ve formátu aplikace dBASE některá data chybí). Teoreticky nás zajímají dvě věci - hlavička a kódování.

Pro hlavičku dodržujte základní pravidla:
- bez diakritiky
- velká písmena
- namísto mezer podtržítko
- názvy do deseti znaků

O kódování se bohužel nikde nemluví. Podle mých zkušeností, ačkoliv Excel 2003 používá při exportu CP1250 (Windows 1250), nedokáže už své výtvory znovu korektně načíst! Očekává totiž kódování CP852 (Latin II, lidově dosovskou češtinu). Co tedy dělat, jestliže námi pracně vygenerované soubory budeme chtít otevírat někdy v Excelu?

Utilitka TXT2DBF sice umožňuje vložit na offset 32 typ kódování použitého zdroje, nicméně VBA v podstatě nic jiného než CP1250 běžně neumí. Potřebujeme tedy ještě konvertor češtiny pro vygenerovaný textový soubor. Naštěstí i u autora TXT2DBF najdeme konverzní nástroj pro příkazovou řádku - OKKONV. Ta by kromě jiného měla zvládnout převést kódování i přímo v DBF souborech.

Nastudovali jste si utilitku TXT2DBF z odkazu? Jen upřesňuji:

A) Přepínače kódování (při hledání jsem se docela zapotil):
/C0164 ... Codepage 852 Eastern European MS-DOS
/C0168 ... Codepage 895 Kamenicky (Czech) MS-DOS
/C01C8 ... Codepage 1250 Eastern European Windows
B) Délka 5.2 pro pole číselného typu značí celkovou délku 5 znaků (4 číslice + desetinná tečka), z toho 2 číslice za desetinnou tečkou (například 12.34).
C) Neosvědčilo se mi používat parametr /T.
D) U pravdivostních hodnot zlobí Y a N (A, N je špatně). Doporučuji používat jen T (True) a F (False).

Pojďme se nyní už podívat na příklad tabulky a kód VBA, který okomentuji posléze. Před jeho spuštěním vyberte oblast tabulky.



Kód VBA vzhledem k jeho délce najdete zde.

Pro kontrolu si necháme textovou podobu tabulky zobrazit v okně Immediate editoru VBA (Ctrl+G).



Při generování textové formy tabulky v dřívějším článku jsem si nedělal vrásky s technikou zjišťování maximální délky obsahu buňky ve sloupci. Zde už jsem se nad tím zamyslel. Jde o to, že na listu bychom použili maticový vzorec. Jak na něj ve VBA? Obecně by ho měla zvládat metoda Evaluate, nicméně jsou s ní problémy. Proto jsem použil malý trik, kdy jsem si nechal výsledek spočítat přes dočasný, pojmenovaný vzorec na listu. Podobně jsem složitějším maticovým vzorcem chtěl obdržet maximální počet číslic za desetinnou čárkou. Zde už začal ale použitý postup také selhávat. Nakonec jsem dospěl k takovému maticovému vzorci, který byl správně dopočítán i pod VBA. Aby toho nebylo málo, bez procházení buněk pravděpodobně není možné se dopracovat počtu viditelných desetinných míst (u naformátovaných čísel). Proti tomu už byly ostatní věci hračkou (zarovnání čísel a nahrazení desetinné čárky tečkou, převody datumů na americký formát, převody pravdivostních hodnot atd.)

A jak vypadá vygenerovaný soubor data852.dbf? K jeho prohlížení se nabízí několik bezplatných nástrojů (počítejte s určitou mírou chybovosti u každého z nich):

PSDbf view
DBF Viewer Plus
DBFNavigator
CDBFview (plugin pro Total Commander)

Komentáře

Žádný komentář doposud nebyl přidán. Buďte první...

Přidat komentář

Pro přidání komentáře musíte být přihlášeni.

Hodnocení

Musíte být přihlášeni, abyste mohli hodnotit.

Prosím přihlašte se nebo se zaregistrujte.

Žádné hodnocení ještě nebylo zaznamenáno.
... nejlépe se zpracovávají tabulky mléčné čokolády