Stránka 1 z 2

Exportní filtr z Excelu do .txt (vyřešeno)

Napsal: 26 lis 2005 09:19
od Axamith
Potřeboval bych upravit nebo napsat exportní fitr z excelu. Výstupní soubor potřebuji jako prostý text. Nejvíce se mému požadavku blíží export jako Text (MS DOS) Výsledek vypadá takto :

Kód: Vybrat vše

G00   X0,0000   Y0,0000   ";"   
G01   X-2,5710   "Y-7,4660;"      
G01   X15.457   "Y-7,4660;"      
G02   X14.215   Y4.157   I12,0000   "J3,0000;"
G01   X10,0000   "Y-7,4660;"      
"M02;"            

Vadí mi tam dlouhé mezery a uvozovky. Zatím to upravuji ručně v texťáku, ale to není moc vhodná cesta vzhledem k mnoožství zpracovávaných dat. Je možné si filtr upravit nebo napsat vlastní ? Také bych uvítal možnost přednastavené vlastní koncovky.

Díky za názory.

Napsal: 26 lis 2005 10:56
od miras
Když dáš Soubor->Uložit jako, je možnost vybírat z velkýho množství typů souborů. Žádnej z nich ti nevyhovuje? Co třeba csv?
Vždycky sem potřeboval data v nějakým formátu do excelu importovat, tam je možností nastavení spousta, s exportem sem si moc nehrál. Uvidíme s čím přijde mikel 8)
Bylo by fajn uvést konkrétní příklady. Třeba screenshot jak to vypadá v excelu a jak by sis představoval aby to vypadalo po exportu. Můžeš prozradit co s tím souborem pak potřebuješ dělat?

Napsal: 26 lis 2005 11:33
od Axamith
Zdrojovéý a výsledné soubory lze stáhnout na http://mujweb.cz/www/Axamith/Privat/Export.zip?r=2494
Je tam zdrojový soubor v Excelu, soubor uložený jako text (MS DOS) a ručně doeditovaný s indexem new. Používám to k programování CNC strojů a řízení událostí stroje externím skriptem. Taková trochu divočina. Používám k tomu Excel, protože má velké možnosti ve výpočtech. Na jiné práce mám SW v ceně rodiného domku (legální), ale k této problematice je excel vhodnější - mám přímom kontrolu nad výsledným kódem.

Napsal: 27 lis 2005 09:55
od Rimmer
Tak jsem se na to mrknul, spec. na ten new file. Formát je dost divoký, v prvním řádku máš tabulátor, v druhém už není (???). Má to tak opravdu být? Pokud by byly rozestupy souměrné ve všech řádcích, bylo by otázkou pár minut napsat malou aplikaci v Ms Access, odtud snadno exportovat.

V excelu jsem to ale nikdy nedělal :? Chtělo by to asi ručně napsat ve VisualBasicu (zvláště jestli se liší řádek 1 od řádku 2)..

Napsal: 29 lis 2005 15:10
od Axamith
Do příkladu jsem napsal kravinu. Tak to dopadá, když se spěchá. Správný kód má vypadat takhle :

Kód: Vybrat vše

G00 X0.0000 Y0.0000 ;
G01 X-2.5710 Y-7.4660;
G01 X15.458 Y-7.4660;
G01 X19.1690 Y-9.6520;
M02;

Problematiku mezer bych vyřešil sloučením obsahů potřebného počtu buněk do jedné pomocí "&" včetně mezer mezi jednotlivými bloky kódu. Potom by už zbývalo vyřešit uvozovky při exportu. Přemýšlel jsem o nějakém udělátku, které by načetlo celý soubor, odmazalo co je potřeba a opět uložilo. To je ale zatím nad moje síly.[/list]

Napsal: 30 lis 2005 13:16
od Axamith
Chtěl bych rozšířit dotaz. Mám rozbalovací seznam s hodnotami 1 - 6.
Potřeboval bych při změně hodnoty cílové buňky např. na č. 1 aby se mi otevřela stránka 1, při č. 2 stránka 2 atd. Lze na toto napsat makro ???

Napsal: 03 pro 2005 11:03
od mikel
Tak makro na Export se mi povedlo napsat docela rychle, ale vždy z toho vyšlo tohle:
Obrázek
Celou dobu jsem si lámal hlavu, kde je chyba, že jenom první 3 řádky jsou v uvozovkách, až se mi na to povedlo přijít. Způsobuje to čárka jako oddělovač desetinných míst. A protože tam máš čárky i tečky, tak chci vědět, co je správný oddělovač, ať vím, jak to řešit.

P.S. Na ten seznam se podívám za chvíli. Ale ještě potřebuju vědět, co myslíš tím otevřít stránku? Myslíš tím náhled stránky pro tisk nebo nastavení aktivní buňky na vybranou stránku nebo něco jiného? Předpokládám, že tím nemyslíš přechod na jiný list.

Napsal: 14 led 2006 10:36
od Axamith
Pánové omlouvám se, že jsem nereagoval na odpověď . Není to nedostatkem slušnosti. Dostal jsem se do časového presu a některé úkoly prostě musely jít dočasně stranou. Takže pokud jste ochotni se dále zabývat danou problematikou , tak upřesňuji : jako oddělovač desetiných míst se bude používat tečka. A co se týče rozbalovacího seznamu, tak miras předpokládá správně. Mám rozbalovací seznam s hodnotami 1 - 6.
Potřeboval bych při změně hodnoty cílové buňky např. na hodnotu 1 aby se mi otevřel list 1, při hodnotě 2 list 2 atd. Lze na toto napsat makro ???

Děkuji axamith

Napsal: 14 led 2006 12:25
od mikel
Tak tě vítám zpátky mezi živými. :lol:
Ještě jsem to nesmazal, takže tenhle případ znova otevřu.

Napsal: 14 led 2006 16:21
od mikel
Tak tady je to makro. Přidej si tam tlačítko na spouštění.

Kód: Vybrat vše

Sub ExportToTXT()
 Dim Orig As Worksheet, Novy As Worksheet, Bunka As Range, Kod As Variant, i As Integer, pom As Integer
  Set Orig = Worksheets(1)
  Set Bunka = Orig.Range("E2:I65536").Find(What:=",")
  If Not Bunka Is Nothing Then
    MsgBox "Zápis obsahuje , jako oddělovač. Export bude chybný!", vbExclamation
  End If
  Set Novy = Workbooks.Add.Worksheets(1)
  Novy.Range("A1").Select
  Set Bunka = Orig.Range("E2")
  Do While Bunka.Value <> ""
    Kod = Bunka.Value
    For i = 1 To 4
      If Bunka.Offset(0, i).Value <> "" Then
        Kod = Kod & " " & Bunka.Offset(0, i).Value
      End If
    Next i
    ActiveCell.NumberFormat = "@"
    ActiveCell = Kod
    ActiveCell.Offset(1, 0).Activate
    Set Bunka = Bunka.Offset(1, 0)
  Loop
  myFile = Application.GetSaveAsFilename(filefilter:="Text files (*.txt), *.txt")
  ActiveWorkbook.SaveAs Filename:=myFile, FileFormat:=xlTextWindows
  Application.DisplayAlerts = False
    ActiveWorkbook.Close
  Application.DisplayAlerts = True
End Sub

Napsal: 14 led 2006 16:45
od mikel
Předpokládám, že ten rozbalovací seznam jsi vytvořil z menu Formuláře. V tom případě si do sešitu přidej to makro. Adresu v Range změň tak, že tam dáš adresu buňky, kam se zapisuje vybraná hodnota. A když to makro přiřadíš k tomu rozbalovacímu seznamu, tak se ti automaticky spustí, když změníš hodnotu.

Kód: Vybrat vše

Sub SheetChange()
Worksheets(Range("J1").Value).Activate
End Sub


Jestli máš seznam vytvořený pomocí Ovládacích prvků nebo Data/Ověření, tak napiš. Budeme to muset trochu změnit.

Napsal: 18 led 2006 04:37
od Axamith
Díky za rady, do konce týdne to otestuji a dám vědět výsledek. I když předpokládám, že to to pojede bez problémů, jako všechno, co jsem od tebe viděl.

Axamith