» Poradna » Programy

Makro na sloučení *.csv souborů

 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Ahoj, potřeboval bych pomoct vyřešit makro, které by mi vytahalo obsah z jednotlivých csv souborů, které mám v jedné složce a dalo mi jejich obsah pod sebe. Každý soubor má stejnou strukturu. Vždy po přidání hodnot je potřeba přidat nový sloupec, kam se vepíše název souboru, ze kterého se to vysosalo. Sloučení jako takové dám dokupy, ať už makro, nebo přes konzoli, ale potřebuji mít tenhle celý proces automatický, tak kdyby jste někdo prosím věděli. DíkyV:

Odpovědi na otázku

 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Myslím, že by se to dobře programovalo v Excelu pomocí Visual Basic for Applications (VBA) nebo pomocí maker.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Automating Importing Multiple CSV Text Files - VBA Excel 2010 :https://www.youtube.com/watch

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 48.0

na linuxu by tohle podle mne krásně uměl SED přes konzoli.Ale mělo by to jít i ve Windows konzoli:http://stackoverflow.com/questions/12745623/batch-...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Přes konzoli jde snadno udělat sloučení, až moc snadno.. ale když business user uslyší slovo konzole, tak uteče :) Musí to být jednoduché, na jedno kliknutí v Excelu .

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Firefox 48.0

pokud je to BAT soubor, kterému jen někam nasype CSV a spustí to, tak proč by mu to mělo vadit? Jen to musíš udělat tak, aby tam nemusel zadávat žádné parametry ap.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Základem je jednoduchost, tady není prostor pro "BAT soubor, kterému jen někam". Navíc konzole přesype úplně celý obsah, macro mi teď už maže headingy od 2. souboru, takže mi nedochází k duplicitám. Ale ještě mi zbývá dořešit přidávání názvů souborů, ze kterých se data čerpala, do dalšího sloupce.. nějaká idea?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Firefox 48.0

sorry, s makry ti neporadím, já se snažím nevázat na proprietární softy - zvláště od Microsoftu, kde hrozí, že po updatu půlka těhle věcí přestane fungovat....

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 36.0

Šlo by to dělat přes sqlite. https://sqlite.org/download.htmlZaložíš si databázi , v ní založíš tabulku a do té naimportuješ soubor csv.Po každém importu souboru , provedeš update s názvem soubor do sloupce. Až to bude hotové , tak tabulku vyexportuješ do souboru csv. Vše se dá vyřešit přes příkazový řádek. Možná to zní složitě, ale není. Příkladvytvoř si soubor např prenos.batdo něj napišsqlite3.exe "nazev_databaze.db3" ".read prenos_dat.txt"Neexistuje-li databáze, tak se založí.Nyní vytvoř soubor prenos_dat.txtdo něj zapiš.read create_table.sql.separator '#'.header off.import prvni_soubor.csv tabulka .read update_table.sql.separator '#'.header off.import druhy_soubor.csv tabulka .read update_table.sql.mode csv.separator '#'.output sloucena.csvselect * from tabulka2;.output sloucena.csv.exitNyní vytvoř soubor create_table.sqldo něj zapišCREATE TABLE _tabulka ( "SLOUPEC1" TEXT, "SLOUPEC2" TEXT,);CREATE TABLE _tabulka2 ( "SLOUPEC1" TEXT, "SLOUPEC2" TEXT, "SLOUPEC_NAZEV_SOUBORU" TEXT);Nyní vytvoř soubor update_table.sqldo něj zapišdelete from tabulka;insert into tabulka2(sloupec1,sloupec2) select sloupec1,sloupec2 from tabulka;update tabulka2 set SLOUPEC_NAZEV_SOUBORU="nazev_souboru" where SLOUPEC_NAZEV_SOUBORU=""a spustíš soubor bat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Tahle varianta mě taky napadla, ale dostal jsem pojeb.. Musí to být čistě v Excelu, když nějaký business user otevře excel tak pouze spustí makro a má hotovo :/ Takže přes db cesta nevede :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 47.0

To přece není problém. Tak si napiš (nechej napsat) makro. Sám jsem si napsal něco podobného: načítám textové soubory, vkládám do Excelu, počítám nějaké statistické hodnoty a tvořím z nich grafy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Hádám že na poslední 2 kroky jsou použil record. Makro pro moje účely vypadá cca takto, teď už mě trápí jen problém s tím připisováním názvů souborů, ze kterých se to čerpalo.Sub ImportCSV() Dim strSourcePath As String Dim strDestPath As String Dim strFile As String Dim strData As String Dim x As Variant Dim Cnt As Long Dim r As Long Dim c As Long Application.ScreenUpdating = False 'Change the path to the source folder accordingly strSourcePath = "C:\Path\" If Right(strSourcePath, 1) <> "\" Then strSourcePath = strSourcePath & "\" 'Change the path to the destination folder accordingly strDestPath = "C:\Path\" If Right(strDestPath, 1) <> "\" Then strDestPath = strDestPath & "\" strFile = Dir(strSourcePath & "*.csv") Do While Len(strFile) > 0 Cnt = Cnt + 1 If Cnt = 1 Then r = 1 Else r = Cells(Rows.Count, "A").End(xlUp).Row + 1 End If Open strSourcePath & strFile For Input As #1 If Cnt > 1 Then Line Input #1, strData End If Do Until EOF(1) Line Input #1, strData x = Split(strData, ",") For c = 0 To UBound(x) Cells(r, c + 1).Value = Trim(x(c)) Next c r = r + 1 Loop Close #1 Name strSourcePath & strFile As strDestPath & strFile strFile = Dir Loop Application.ScreenUpdating = True If Cnt = 0 Then _ MsgBox "No CSV files were found...", vbExclamation End Sub

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Firefox 48.0

snad to nebude moc pomalý. Jsem před časem potřeboval něco na práci s textovými daty a Excel to snad minutu až dvě jen načítal Nakonec to pořešila právě malá utilita - něco jako zástupce, co to převedla a pak se to teprv otevřelo v Excelu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 52.0.2743.116

Jde zhruba o 55 souborů ve výsledné délce 28k řádků, proběhne to během 2 vteřin, takže parádní :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Celý proces, Nový sloupec


Určitě si přečtěte

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

** Bezdrátové myši řídí čip od Nordic Semiconductors ** Jeho rádiové vysílače si před lety oblíbila i komunita kutilů ** Dnes si je vyzkoušíme v praxi

Jakub Čížek | 9

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 7

Měření rychlosti internetu: Populární Speedtest.net neřekne o skutečné rychlosti internetu téměř nic

Měření rychlosti internetu: Populární Speedtest.net neřekne o skutečné rychlosti internetu téměř nic

** Speedtest stále častěji měří jen rychlost na poslední míli ** Ta však ale neodpovídá reálnému surfování ** Jak se tedy pokusit změřit tu skutečnou?

Jakub Čížek | 85

Dnes nastal konec Windows 7. Ale nepropadejte panice, počítač vám nastartuje i zítra

Dnes nastal konec Windows 7. Ale nepropadejte panice, počítač vám nastartuje i zítra

** Dnes končí podpora Windows 7 a systém formálně umírá ** Co to ale znamená v praxi a bude mi PC fungovat i zítra? ** A mohu i v lednu 2020 zdarma přejít na Windows 10?

Jakub Čížek | 121



Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu