Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel: uložení vybraných do nového csv souboru

Mám *xlsm sešit, viz příloha.

Potřeboval bych uložit dva červeně označené řádky (vlastně obsah dvou buněk), jako nový textový soubor, se jménem "evidence.csv (opět v příloze).

Nyní to dělám ručně:
- vyberu myší ony dvě buňky C16+C17
- zkopíruji do schránky (Ctrl+Ins)
- otevřu ve stejném adresáři soubor evidence.csv
- vyberu veškerý jeho obsah (Ctrl-A)
- přepíše jej obsahem schránky (Shift+Ins)
- onen soubor evidence.csv dám uložit

Je nějaká rozumná možnost jak tohle zautomatizovat, nějakým makrem či VBA (Excel 2007). Nejraději bych ťukl na nějaké tlačítko na stránce v Excelu a měl ten soubor *csv aktualizovaný.

-----
Uvedený soubor je jen jednoduchý příklad, ve skutečnosti se jedná o výrazně vyšší rozsah dat, které bych potřeboval takto exportovat mimo Excel. Takto mi například můj účetní program "poskládá" přiznání či kontrolní hlášení, já to jako text zkopíruji do *xml souborů a ty rovnou mohu odesílat datovkou na FÚ. Princip ale je pořád stejný: vybrat data, vložit do schránky a přepsat tím obsah nějakého jiného souboru.

Díky za tipy, jak na to - pokud to tedy jde.

Předmět Autor Datum
řeším to dřevorubecky: zájmové oblasti nechávám odkazy přenést na další list a tento celý ukládám do…
lední brtník 27.04.2019 15:54
lední brtník
Taky si shromažďuji veškerá data z různých míst sešitu na jednom listu, pěkně pod sebe do jednoho sl…
L-Core 27.04.2019 16:23
L-Core
možná kdyby excel pochopil, že ty hodnoty jsou číslo, exportoval by je bez uvozovek.
lední brtník 27.04.2019 16:31
lední brtník
Uvozovky vyřešeny, pokud nenechám všechny hodnoty, které chci exportovat, slučovat (concatenate) do…
L-Core 27.04.2019 16:47
L-Core
No tak vytvořit *csv makrem z Excelu není problém, pokud jsou data v jednotlivých sloupečcích. Probl…
L-Core 27.04.2019 16:40
L-Core
Takto vypadají oba *csv. První, jako export z *pdf, v takovém formátu by měl být i import: [86709-…
L-Core 27.04.2019 16:45
L-Core
Zkoušel jsem to i s prostým textem (*txt), ale i tam Excel na konci "odentruje" a *pdf formulář si s…
L-Core 27.04.2019 17:01
L-Core
Něco sem zkusil výsledek viz obr. Otestuj:-) [86711-evidence-png]
Siki83 27.04.2019 21:38
Siki83
Nebo ještě takto: Sub EvidenceCSV() Dim Data As String Dim i As Integer Const Hlavicka As String =…
Siki83 27.04.2019 21:58
Siki83
Perfektní, díky moc! :beer: Koukám na oba způsoby, oba se dají použít podle toho, kde budou zdrojov… poslední
L-Core 28.04.2019 08:14
L-Core
Tohle by přece šlo mimořádně jednoduše naprogramovat.
Flash_Gordon 27.04.2019 21:47
Flash_Gordon
To samozřejmě vím, ale jako účetní a daňař to nezvládnu ;-)
L-Core 28.04.2019 07:56
L-Core

Taky si shromažďuji veškerá data z různých míst sešitu na jednom listu, pěkně pod sebe do jednoho sloupečku, abych to mohl snadno kopírovat. Činím tak ručně, rád bych to zautomatizoval na "tuk na buttonek".

Export do csv z listu z Excelu bohužel přidá na ty moje dva řádky úvozovky dopředu a dozadu, což bych musel odstraňovat ručně.

-----
:i:
Ale teď vidím, že na to jdu asi zbytečně složitě. Že bude lepší mít jednotlivé údaje v samostatných sloupcích. Jdu to zkoušet..

No tak vytvořit *csv makrem z Excelu není problém, pokud jsou data v jednotlivých sloupečcích. Problém ale je, že výsledná *csv soubor nebosahuje ty požadované 2 řádky, ale ještě vytvoří na konci druhého řádku zalomení a tím pádem prázdný řádek číslo tři. A s tím si neporadí *pdf formulář...

Nebo ještě takto:

Sub EvidenceCSV()
Dim Data As String
Dim i As Integer
Const Hlavicka As String = "firma;ulice;cislo_domu;mesto;poznamka"

Data = Join(Application.Transpose(List1.Range("C6:C10").Value), ";")

i = FreeFile
Open ThisWorkbook.Path & "\evidence" & ".csv" For Output As #i
Print #i, Hlavicka
Print #i, Data;
Close #i

Perfektní, díky moc! :beer:

Koukám na oba způsoby, oba se dají použít podle toho, kde budou zdrojová data (rozházené, ve sloupečku). Nerozumím (vidím to poprvé) jen tomu příkazu, kdy se vytvoří ten druhý soubor, tomu

i = FreeFile

Je to pro mě úplná novinka, musím to trochu naštudovat.

Zpět do poradny Odpovědět na původní otázku Nahoru