Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel: kopírování vybraných dat do *xml souboru

Vlastně to tak trochu navazuje na mé dřívější dotazy/pokusy. Tohle je finále :)

Mám v *xlsm sešitu list s výsledky, které jsou výhradně ve sloupci A, v řádcích 1-x, bez vynechání. Počet řádků je proměnlivý, od cca 5 klidně po 500.
Makro pro označení oblasti je jednoduché

Sub Oblast_XML()

    Cells(300, 1).End(xlUp).Offset(0, 0).Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.Copy

End Sub

Tuto vybranou oblast (pokaždé různě velkou) potřebuji nakopírovat do (makrem vytvořeného *xml souboru).

Ten název souboru mám pořešen, viz https://pc.poradna.net/questions/2962434-excel-jak-dostat-promennou-do-makra-pro-nazev-exportovaneho-souboru

Zbývá mi nějak vyřešit to samotné kopírování. V příkladu z předchozího odkazu (viz dále) jsem kopíroval vždy obsah buňky C17. Teď to bude A1 až A??, prostě ta vybraná pokaždé jinak "dlouhá" oblast. Název *xml souboru je v buňce C21.

Nástřel (řádek Data = ... pochopitelně nefunguje!):

Sub Tisk_XML()
Dim Data As String
Dim i As Integer

Data = Join(Application(List1.Range("A1:A??").Value))

i = FreeFile
Open ThisWorkbook.Path & "\" & Range("c21") & ".csv" For Output As #i

Print #i, Data,
Close #i

End Sub

Potřebuji nějak upravit tu oblast dat. Něco jako (vím, je to blbě) jsem tam naznačil, Data = Join(Application(List1.Range("A1:A??").Value))

Mohl bych tam možná nějak zapojit "pojmenovanou oblast", kdyby to první makro pokračovalo (v konkrétním případě bylo vybráno 13 řádků)

ActiveWorkbook.Names.Add Name:="oblast", RefersToR1C1:="=List1!R1C1:R13C1"
ActiveWorkbook.Names("oblast").Comment = ""

Ale neporadím si právě s tím proměnlivým počtem řádků. Ale tohle je možná zbytečný mezikrok, klíčové bude specifikovat (proměnlivou velikost oblasti) Data v tom druhém makru.

Jak na to?
Díky za tipy.

...já vím, poněkud přeexcelováno z mé strany... :-p

Řešení:

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak pánové, tady sem skončil. Se.u se tu s tím od 10:00 a výsledek 0 ]:( Cesta jakési šablony, do kt…
Siki83 08.12.2019 15:50
Siki83
Bohuzel jsem na Macu, tak nemoho vyzkouset, ale tohle by melo pomoct vyresit to kodovani... https:/…
MaSo 09.12.2019 08:12
MaSo
Chlape, Ty bys zasloužil pořádnýho :beer: !!! Máš pravdu přes ten ADODB.Stream to funguje !!! Pro L…
Siki83 09.12.2019 23:20
Siki83
::) Koukám na to jako blázen. Není to pro mě španělská, ale mnohem cizokrajnější vesnice. Převelice… nový
L-Core 10.12.2019 07:13
L-Core
Muselo! :-D Problém byl fakt jen ve způsobu ukládání, to že L-Core skládá to xml, takovým exotickým… poslední
MaSo 10.12.2019 08:59
MaSo

Tak pánové, tady sem skončil. Se.u se tu s tím od 10:00 a výsledek 0 ]:(
Cesta jakési šablony, do které by se vkládala data nikam nevede. Výsledný soubor není validní.

Pokud xml vytvořím jako nový soubor v Notepad++ a nakopíruji do něj data z excelu má výslednou velikost 1,3 kB a je funkční !
Pokud xml vytvořím makrem se stejným obsahem je výsledná velikost 1,2 kB a soubor není validní.

Pokud xml soubor vytvořený makrem otevřu v náhledu pomoci TC (F3) má zmršenou interpunkci (Č, Ř ...), ale pokud jej otevřu pro úpravy (F4) vše je v pořádku kua !!!

VBA má na práci s xml knihovny, ale sem v (_!_) jak Baťa s dřevákama, netuším jak s tím pracovat.

Muselo! :-D

Problém byl fakt jen ve způsobu ukládání, to že L-Core skládá to xml, takovým exotickým způsobem nemá vliv. Xml je normální textový soubor. Samozřejmě skládat to xml přes DOM by bylo lepší...

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