

Otevření různého *txt ve Wordu, následné (stejné) úpravy makry
Mám *txt soubor s "nechtěnými znaky" (příklad v příloze). Jedná se o temp. výstup účetního programu při tisku na tiskárnu. Soubor se vždy jmenuje #LPT1.txt.
Soubor chci upravit do bezchybně čitelné podoby a uložit do docx/pdf
Teď to dělám tak, že #LPT1.txt otevřu ve Wordu 2007, přitom po otevření vybírám kódování:
Následně provádím úpravy:
- nastavím okraje stránky
- nastavím velikost písma (7)
- odstraním "nechtěné" řetězce "(500X" a "(502X" (funkcí Najít a nahradit)
a uložím.
Jak tohle zautomatizovat či si to alespoň usnadnit? Mám jakési povědomí (tedy vím jen to, že to existuje) o šabloně normal.dot, to je asi ta jediná, kterou - bez změny - používám. Moje představa je, že bych určité *txt (tedy ne automaticky každé!) nějak načetl a ve Wordu bych měl k dispozici makro, které by veškeré úpravy - případně i další - provedlo. Napsat si to makro asi nebude problém, předpokládám, že je to obdobné jako v Excelu. Buď tlačítko, nebo ještě jednodušeji auto_open makro.
Jak to výběrové otevření určitého *txt, tedy konkrétně #LPT1.txt, ve Wordu zabezpečit?
Díky za tipy a nakopnutí správným směrem.
Ulázka takového #LPT1.txt souboru: https://pc.poradna.net/files/85020-lpt1-txt
Ale áno. Zapni nahrávanie makra, sprav potrebné kroky, a potom už len doladiť vysledok. Ak to poznáš v Exceli, tak nebude problém.
A ešte teda dodatok, makro môžeš volať priamo z wordu, môžeš ho ale volať aj parametrom priamo z cmd, alebo si spraviť jednoduchý .vbs skript, atď.. microsoft v tomto smere ponúka veľa možností.
https://social.msdn.microsoft.com/Forums/en-US/a391eccc-b08f-442f-9724-2e3313fedf87/invoking-word-macro-with-arguments-from-command-line
Jak jsem psal, s tím makrem problém nemám. Problém mám s tím, že žádný doc/docx soubor, kde bych to makro měl uložené, nemám. Mám jen txt soubor, ten otevírám ve Wordu, předtím musím potvrdit kódování v unicode. Jak tedy z takto otevřeného txt ve Wordu zavolat makro?
makro predsa môžeš mať v normal.dot alebo prípadne aj v akomkoľvek inom doc súbore
Já nevím, zda si mám ten normal.dot upravovat, abych si to nějak nerozdrbal..
Když v tom souboru vytvořím makro a uložím jako neco.docm nebo neco.dotm a otevřu další *txt, ve kterém chci makra provést, žádné makra k dispozici nemám, i když jsou soubory neco.docm i neco.dotm otevřeny.
Vytvor si nový súbor docm, do ktorého si nahráš a upravíš makro.
Týmto súborom potom budeš otvárať tvoje súbory txt a vykonávať na nich zmeny makrom.
Pri zapnutí záznamu makra si:
- vyber nejakú klávesovú skratku, ktorou budeš makro spúšťať
- prikážeš, že makro bude uložené v tomto súbore a nie v šablone
(viď obrázok postupu v prílohe)
Po tom, čo si nahráš a upravíš makro (môžeš v ňom zároveň zapracovať export upraveného txt do pdf a následne i vymazanie obsahu ako prípravu pre otvorenie ďalšieho txt súboru) si súbor uložíš a budeš ho používať na načítavanie txt súborov, stlačením priradenej kombinácie kláves vykonáš úpravy, exportuješ do pdf, vymažeš obsah...
Nerozumím akorát tomuto:
Teď to dělám tak, že na *txt soubor kliknu pravou myší a vyberu "Otevřít v MS Word" (následně vyberu kódování, viz výše). Já prostě v tom Wordu nic jako "importovat txt" nevidím; netuším tedy, jak ten *txt dostat do připraveného *docm.
Nebo to tam musím nakopírovat přes schránku? To by nebylo nic moc, ten *txt může mít i několik tisíc stránek...
Vo Worde si riadne zvoľ Súbor - Otvoriť a v dialógovom okne si zvoľ typ súboru "všetky súbory (*.*)"
Viď príloha
Očividne si s tým ešte nerobil, keď sa pýtaš také otázky.
Vytvoríš si čistý docx, v ňom zaznamenáš makro s ktorým nemáš problém. Toto makro zostane uložené v tvojom docx. A následne budeš pomocou volania onoho docx a príslušného makra narábať s tvojim TXT podľa ľubovôle. Spracuješ text, vyrobíš si z neho doc, pdf, vytlačíš, čo len chceš.. všetko podľa tvojho algoritmu.
Póňal?
Nerozumím, nevím jak "volat docx a makra", když chci otevřít prostý txt. Možná si stojím na vedení, přešlápnutí nepomohlo
Na tom obrázku výše: nedokážu donutit Word, aby ve "Všechny aktivní dokumenty a šablony" zobrazil ten otevřený docm s makrem, které by pak mohlo být použitelné pro dlaší soubory. A nefunguje to ani v případě, že makra ve Wordu povolím úplně všude.
Nakonec abych drbal do normal.dot, čemu se chci vyhnout...
A ano, nikdy jsem makra ve Wordu nepoužíval. Ani to s Wordem moc neumím, využiju jen zlomek jeho funkcí, bohatě by mi stačil WordPad. Tohle je můj první worďácký makropokus.
musí to jít: soubory docx/odt,pdf mají známou strukturu:
pdf:
existuje něco jako latex, případně to je kanon na vrabce, ale text2pdf něco existuje.
odt/doc, určitě musí existovat podobná utilitka, kromě toho obojí je zip archiv, kde podlě mě je objekt zájmu něco jako content.xml
Nevím, s Wordem nedělám, ale proč neupravit nejdřív ten txt a teprve pak ho eventuálně importovat do jiných formátů? Vyházení nechtěných řetězců je na jednu řádku ...
hm.. proč to řešíš ve Wordu, když to můžeš skriptově prohnat sed-em? Sed existuje i pro windows...
http://www.theunixschool.com/2014/08/sed-examples-remove-delete-chars-from-line-file.html
http://gnuwin32.sourceforge.net/packages/sed.htm
Protože je to pak pohodlné pro zálohování (doc) či tisk. Když si ten můj vzorový soubor otevřeš v texťáku, ani po odstranění těch "(502X" apod. to nevytiskneš rozumně, stránku po stránce, musím ještě změnit velikost písma a nastavit okraje, o to se také makro postará. Já navíc pak využívám toho, že kvůli úspoře papíru tisknu ty sáhodlouhé uzávěrky z upravených doc/pdf tisknu naležato, dvě stránky vedle sebe. Přímo z toho starého DOSovského účta nemám šanci.
Vše mám vymyšlené, jen potřebuju dořešit, jak ten *txt načíst/otevřít v *docm s makry, jak píše kolega výše
Pokud vše selže, tak prostě ta makra nasypu - ač nerad - do normal.dotm. Ten postup, kdy potřebuji zkonvertovat takto txt, sice momentálně nepoužívám tak často, ale pokud to budu mít zmáklé, klidně to použiju 50x měsíčně.
Tak aby som si to ešte raz upresnil, chceš toto: 1. otvoriť vo Worde texťák, 2. pustiť naňho makro, 3. to makro nechceš mať v Normal.dotm (nechápem celkom prečo, ale budiž)
takže ulož si niekam súbor s makrom, napr. G:\makra\mojeskvelemakro.dotm (ulož ako dotm, docm mi nefungovalo),
vo worde nastav cestu k tomu súboru nech si natiahne makrá pri štarte - viď obrázok
Reštartni word a mal by si vedieť to makro spustiť
Já bych to načítal jako text, nedával bych to do převodu.
Prostě normálně
OPEN 'soubor.txt' AS #1 FOR READ
potom nějak číst
pak nezapomenout
CLOSE #1
Už jsem to dlouho nedělal (když to potřebuju, vyjdu ze staršího makra), tak tu syntaxi přesně nevím, ale to je v nápovědě, kromě toho je stejná jako v Basicu. Používám to hlavně pro výstup na tiskárnu (stačí zadat název souboru LPT2:).
A znaky načtené ze souboru bych ko případné konverzi dával do dokumentu.
Vůbec bych na to nepouštěl konvertor wordu.
to CLOSE #1 je potřeba udělat i když makro havaruje (při ladění) na řádku immediate, jinak zůstane soubor otevřený a nelze ho znova otevřít
Ahoj chlape, tak jak si na tom?
Něco sem Ti splácal, převážná část je nahraná záznamníkem, tak se toho nelekni. Tohle je můj druhej pokus co se týče VBA ve Wordu. A musím se přiznat, že s Excelem se to nedá srovnávat (Hlavně k excelu je informací plnej net a knížek 3 (_!_), ale Word to je jiná). Makro se spouští přes kartu "Vývojár" -> Makra ...klasika.
Poté budeš vyzvanej aby si vybral soubor k importu (defaultní cesta je nastavená na plochu, to si případně uprav). Po importu se odstraní Tebou uvedené řetězce (můžeš si doplnit další, je to pole procházené v cyklu), okraje stránky se nastaví na úzké
a font je Courier New o velikosti 7. Nic jiného sem nedělal. Pravděpodobně bude ještě nutné (nejspíše ručně) upravit stránky a uložit.
Ahoj, díky, mrknu na to pořádně po neděli (DPH..), určitě kvůli rozšíření obzorů.
Nicméně mezitím, po různých neúspěšných pokusech, aby to dělalo přesně co chci (vzhled stránky, velikost fontu, náhrady/výmazy řetězců), a jednoduše, jsem makro narval do normal.dotm (je tedy dostupné úplně pro všechny soubory - což sice nepotřebuji, ale nakonec to asi ničemu nevadí). Přiřadil jsem makru klávesovou zkratku, jinde nepoužívanou, Alt+K.
Teď postupuji tak, že kliknu v TC pravým na onen *txt, otevřít v MS Word, Alt+K, uložit jako, hotovo.
Jak píšeš, oproti Excelu je Word pole neorané.. tohle je za více než 20 let, co Word používám (od verze 95) moje první makrování.
Dalo by se to napsat určitě efektněji, kašlu na to, tohle je zase pro mě přehledné.. minimálně bych mohl spojit odstranění (500X a (502X wildcardovým (50?X.
Tak to tě bohužel musím zklamat
. V tomhle případě, se žádné rozšiřování obzorů nekoná. Jak už sem psal, dělal sem to za pomocí záznamníku, tudíž až na dialog k výběru souboru a cyklus je kód shodný.
PS: Když by si někdy narazil na publikaci (nejlépe v CZ) týkající se Wordu a VBA dej vědět. Díky
Ahoj.
Kdybys chtěl, udělal jsem jednoduchou konzolovou apku pro Win, pomocí které to můžeš jednoduše zautomatizovat.
Syntaxe je tato:
txtToWord2.exe lpt1.txt nazevWord.docx
Přeložený program pro konzoli je rovnou v příloze.
Tak vyřešeno k mé maximální spokojenosti. Udělal jsem si baťák na otevření konkrétního souboru ve Wordu (protože jako "výstup" má *txt pořád stejné umístění a název) a jeho zástupce na ploše. Kdykoliv potřebuji konvertovat textový výstup, klik na zástupce, enter, Alt+K (vyvolání makra z normal.dotm, pak tisk nebo uložit do *pdf.
Značím vyřešeno.
Pro mě je tohle důležité hlavně proto, že ze starého DOSovského programu v vDosPlus nejsem přímo schopen tisknout ani do *pdf, ani na inkoustové epsonce, jen na "plnohodnotné" laserovce (neexistují drivery, na Epsonku nedostanu *pjl "nastavení"). Teď mám tiskové výstupy nezávislé na dalším, "využívám