< návrat zpět

MS Excel


Téma: Import dat rss

Zaslal/a 9.4.2015 19:15

Ahoj, chtěl bych se zeptat, zda je možné skrze makro importovat data z textového souboru do excelu.

Abych to upřesnil..

V příloze je .xlsm soubor, do kterého se makrem importují data ze souboru parametry.txt. Vše běží v pohodě za předpokladu, že soubor parametry.txt obsahuje 3 sloupce.
No a já bych potřeboval, aby import proběhl v pořádku pro libovolný počet sloupců ( maximálně 18 ).

Je možné makro upravit tak, aby to fungovalo?

Předem díky
Míra

Příloha: rar24458_parametry.rar (199kB, staženo 32x)
Zaslat odpověď >

icon #024465
eLCHa
Ono to je vše pouze o správném nastavení importu textového souboru...Sub subImportTextFile()
Const QT_DEST As String = "A1"

Dim sFileName
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.FilterIndex = 6
.InitialFileName = ThisWorkbook.Path
If .Show Then
sFileName = .SelectedItems(1)
End If
End With 'Application.FileDialog(msoFileDialogOpen)

If Not sFileName = vbNullString Then
Range(QT_DEST).CurrentRegion.EntireColumn.Delete

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sFileName, Destination:=Range(QT_DEST))
.TextFileParseType = xlDelimited
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.Refresh BackgroundQuery:=False
.Delete
End With 'ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sFileName, Destination:=Range(QT_DEST))

Range(QT_DEST).EntireColumn.Delete
End If
End Sub
citovat
#024516
avatar
Děkuju, hned vyzkouším.citovat
#024517
avatar
Tak bohužel, kód jsem překopíroval a vše funguje stejně jako to běželo mě..

Tedy například pokud vyberu data ze souboru:
"parametry-L2+H-Guyer1+Guyer2"

Ve sloupci "C" se mi zobrazí 5 posledních hodnot (5sloupců v jednom).

Btw.. omlouvám se, že jsem se neozval dříve, byl jsem mimo domov.

Míracitovat
icon #024518
eLCHa
Tak bohužel, kód jsem překopíroval a vše funguje stejně jako to běželo mě..

Mno samozřejmě, že to funguje stejně. Protože jste sice makro nakopíroval, ale spustil jste import, který máte nastavený v Query ;)
Musíte se rozhodnout, kterou variantu chcete používat. Na začátku jste psal "zda je možné skrze makro importovat data z textového souboru". Tak jsem Vám dal makro, není ale samospustitelné, musíte ho spustit ručně ;).
Pokud chcete používat dál query - což je lepší varianta (nebudete potřebovat kód) - tak si musíte upravit nastavení vašeho připojení.

1. Otevřete soubor Parametry - nechte ho naimportovat data - budete mít zas více dat ve sloupci C - to nám teď nevadí
2. Klepněte na Data - Připojení, označte parametry a klepněte na Vlastnosti...
3. Definice - Procházet... a vyberte soubor, který chcete importovat
4. A teď to důležité - neklepejte na Dokončit, ale
- označte oddělovač a klepněte na Další >
- odznačte zaškrtnutí u Tabulátor, zaškrtněte Mezera a zaškrtněte Posloupnost oddělovačů jako jeden, klepněte na Další >
- zde byste mohl zrušit import prvního sloupce, ale já bych to klidně nechal tak, takže klepněte na Upřesnit...
- jako oddělovač desetinných míst nastavte tečku, oddělovač tisíců čárku a klepněte na OK
- teď klepněte na Dokončit.

Za tolik písmenek mám u Vás pivocitovat
#024519
avatar
Děkuji za upřesnění, evidentně jsem prve nepochopil..
Tudíž je potřeba makro spouštět nějakým tlačítkem, nebo zkratkou, pokud již nyní chápu správně. A pokud budu používat Query, je třeba toto nastavení provádět pro každý soubor zvlášť, je to tak ?

Omlouvám se za svou tupost, ale s tímto se setkávám poprvé :)

Míracitovat
icon #024520
eLCHa
Tudíž je potřeba makro spouštět nějakým tlačítkem, nebo zkratkou, pokud již nyní chápu správně. A pokud budu používat Query, je třeba toto nastavení provádět pro každý soubor zvlášť, je to tak ?
Makro - tlačítkem nebo událostí (třeba po spuštění).
Query - není třeba, podívejte se na nastavení připojení, jaké tam jsou volby.
Zapněte závity a zbytek už zvládnete - já Vám ukázal co je špatně a cestu jak to opravit.citovat
#024524
avatar
Děkuji, už to téměř funguje jak má, jen ještě jedna zvláštnost.. alespoň pro mne.
Na dalším listě jsem vyhodnotil importovaná data pomocí funkcí, jenže vždy když naimportuji nová data, funkce mi začnou vyhazovat chyby..(funkce se přepíše) dalo by se to nějak upravit, aby mi to pokaždé nevyhazovalo chybu "Neplatný odkaz na buňku" ?
Ještě jednou děkuji.

Míra
Příloha: rar24524_parametry.rar (23kB, staženo 26x)
citovat
#024532
avatar
Tak už sem na to přišel :) Mé řešení je sice trochu neohrabané, ale funguje to, data jsem makrem zkopíroval do další karty a vše již funguje jak má.. bez náležitých úprav se tedy nedá pracovat s importovanými daty.

Míracitovat
#024564
elninoslov
Ale vo "Výsledky" je veľká chyba. Odkaz na stĺpec Data!A má byť vo výsledkoch v stĺpci B, a nie až v stĺpci F.

Neplechu tam robí to vymazávanie stĺpcov. Takže nemazať stĺpce ale iba obsah, a stĺpec A, keď už musí byť v tých TXT, tak tento stĺpec ignorovať, určite nemazať. Mazaním stĺpca Excel automaticky prerobí všetky vzorce (aj relatívne aj absolútne) a potom to nesedí. Výpočty sa jednoducho začnú v stĺpci B.
Riešenie by mohlo byť takéto.
Příloha: rar24564_parametry2.rar (27kB, staženo 28x)
citovat
#024575
avatar
Děkuji za radu, tu chybu se sloupcem F právě dělá ono mazání sloupců, jak popisujete :)

S každým otevřením nových dat se to přepisovalo a posouvalo, každopádně díky za vaše řešení :)

Míracitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje