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í:

Předmět Autor Datum
Neviem, či chápem dobre Tvoju potrebu, pretože každým spustením makra sa pôvodný riadok prepisuje (m…
robert13 07.12.2019 14:02
robert13
Přikládám soubory. Jak *xlsm, jak *txt. Kopíruje se z *xlsm do *txt Data ve sloupci A se mění, makro…
L-Core 07.12.2019 17:59
L-Core
Nejsem sice Robert, ale mám zrovna čas. Tak snad to nebude vadit.
Siki83 07.12.2019 18:37
Siki83
Jasně, že nevadí, díky! :beer: Koukám na to makro, mám co študovat. Hlavně to, proč a jak se to přek…
L-Core 07.12.2019 18:57
L-Core
Upřímně s tím překlopením pole, netuším proč to tak musí být. Ale pokud se to neprovede kód vyhazuje…
Siki83 07.12.2019 20:41
Siki83
Ne. Teď jsem to počítal, minimum je 9 řádků. Jedná se o kontrolní hlášení k DPH.
L-Core 07.12.2019 21:55
L-Core
Tak je tam ještě jeden problém. Některé řádky mají i více jak 300 znaků a při spuštění makra vyskoč…
L-Core 07.12.2019 23:19
L-Core
Některé řádky mají i více jak 300 znaků Proboha, co těm ouřadům posíláš za numera?! Máš pravdu, tr…
Siki83 08.12.2019 02:20
Siki83
Je to kontrolní hlášení k DPH, některé věty jsou prostě dlouhé (identifikace). Převod OK, ale moc n…
L-Core 08.12.2019 07:13
L-Core
Prevod do txt ste poriešili... Len malá poznámka... Excel dovoľuje obsah priamo uložiť ako txt... Ne…
robert13 08.12.2019 09:23
robert13
Otázka otvárania jestvujúceho súboru s vykonaním zmien a opätovným uložením s novým obsahom nie je p…
L-Core 08.12.2019 10:15
L-Core
Otázka otvárania jestvujúceho súboru s vykonaním zmien a opätovným uložením s novým obsahom nie je p…
robert13 08.12.2019 11:16
robert13
Nerozumíme si asi, vůbec se tím xml nezabývej, prostě to považuj jako text. To xml je jen požadovaná…
L-Core 08.12.2019 11:45
L-Core
Ale ak je obsahom xml len text (vravíš, že príponu xml si nemám všímať), tak čo Ti bráni premenovať…
robert13 08.12.2019 12:42
robert13
No… co mi brání… Neumím to:-x Nevím jak ve VBA otevřít voprsalek-01.xml (ve stejném adresáři jako x…
L-Core 08.12.2019 14:51
L-Core
Vedel by som urobiť to, že na stlačenie tlačidla sa premenuje subor (podľa mena z bunky) z xml na tx…
robert13 08.12.2019 18:51
robert13
Já taky nevím, jak se s xml má pracovat. Podle toho vzoru jsem si na jednotlivé možné "řádky" toho k…
L-Core 09.12.2019 06:53
L-Core
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
Tento řádek tam mám jako první, je to "povinná" součást toho souboru, který se nahrává na www stránk…
L-Core 09.12.2019 11:31
L-Core
Nevim, o kterem radku mluvis, ja se bavim o poslednim postu v tom vlakne (tedy o zpuobu, jakym Excel…
MaSo 09.12.2019 11:37
MaSo
Myslel jsem řádek <?xml version="1.0" encoding="UTF-8"?> To bych musel vše komplet předělat, protož…
L-Core 09.12.2019 11:57
L-Core
Cely problem je v tom, ze ten web vyzaduje tzv. XML v UTF8 s BOM (byte order mark)... pokud to sprav…
MaSo 09.12.2019 12:00
MaSo
Otázkou je, zda v Excelu to jde, nějak z nuly takový soubor vytvořit. Protože to vyhazovalo chybu, v…
L-Core 09.12.2019 13:12
L-Core
Urcite to pujde pres ten ADODB.Stream, jen to nemam jak vyzkouset... Pro zacatek bych zkusil podhod…
MaSo 09.12.2019 13:26
MaSo
Open ThisWorkbook.Path & "\" & Range("c21") & ".xml" For Append As #i Bohužel tudy cesta nevede, te…
Siki83 09.12.2019 13:44
Siki83
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…
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

Neviem, či chápem dobre Tvoju potrebu, pretože každým spustením makra sa pôvodný riadok prepisuje (myslel som že budeš potrebovať pridávať dáta)...
Pokiaľ to tak má byť, stačí skopírovať oblasť Range("A1:A" & Range("A1").End(xlDown).Row)(za predpokladu, že medzi A1 až najnižšie vyplnené A nie je prázdna bunka, inak sa na to ide odspodu) a do cieľa prilepiť špeciálne: hodnoty + transponovať (Teraz sa tomu nestíham viac venovať)

Přikládám soubory. Jak *xlsm, jak *txt.
Kopíruje se z *xlsm do *txt
Data ve sloupci A se mění, makro má zkopírovat do *txt vždy aktuální stav.

Ano, každým spuštěním makra se data v *txt přepisují. Respektive, těch *txt bude více, budou se měnit podle obsahu buňky C21.

V *xlsm jsem se snažil vše popsat, poznámky jsou i přímo v makru, které není úplné, chybí mi vevnitř jeden krok.
Ten *txt je tak, jak chci aby to vypadalo po požadovaném exportu. Prostě prostá kopie sloupce A (ale jen po tu poslední platnou buňku, nic víc, žádné mezery, entrery) z *xlsm

Jasně, nehoří to, mrkni na to, až budeš mít čas :beer:
.
.

Jasně, že nevadí, díky! :beer:
Koukám na to makro, mám co študovat. Hlavně to, proč a jak se to překlopilo na vodorovně a pak na svisle..

-----
OT: Plánuji přechod z Office 2007 na Office 2019 (výpalnickou verzi 365 nechci), snad to nebude moc odlišné :)
Budu si muset pořídit nějaký solidní zdroj, jak se s VBA lépe vypořádat/naučit. Už třeba to, že by mě nenapadlo za "Dim Data" dát v tomto případě (). Evidentně mi chybí základy :-/

Upřímně s tím překlopením pole, netuším proč to tak musí být. Ale pokud se to neprovede kód vyhazuje chybu a nic se do souboru nezapíše.
Jinak deklarace Data() znamená, že proměnná Data je deklarována jako pole, to zajistí právě ty závorky.

Teď mě napadá, že není ošetřen stav, kdy bude vyplněna pouze jediná buňka (A1). V tom případě dojde k chybě.
Je tato varianta vůbec možná?

Edit: soubor

Tak je tam ještě jeden problém.

Některé řádky mají i více jak 300 znaků a při spuštění makra vyskočí okno MS Visual Basic:

Run-time error '13':
Type mismatch.

Tlačítko Debug ukazuje na

Data = Application.Transpose(Data)

"Kazí" se to někde u 255 znaků v buňce..

Cosi jsem našel, ale je to pro mě španělská vesnice:
http://www.vbaexpress.com/forum/showthread.php?63192-Transpose-an-array-type-mismatch-error
(omezení 255 znaků na buňku)

A ještě dále:https://stackoverflow.com/questions/35395789/excel-vba-need-workaround-for-255-transpose-character-limit-when-returning-vari

Některé řádky mají i více jak 300 znaků

Proboha, co těm ouřadům posíláš za numera?!

Máš pravdu, transpose má problém pokud délka řetězce přesáhne 255 znaků. Popravdě sem nepočítal, že tahle situace může u Tebe nastat. Moje chyba.

Přikládám upravený soubor. Je odstraněna fce Transpose = pole se do souboru *.txt nezapíše najednou, ale je přidán cyklus, který prochází pole a zapisuje jednotlivé hodnoty. Bude to o něco pomalejší, ale nebude to háklivý na délku řetězce.

Je to kontrolní hlášení k DPH, některé věty jsou prostě dlouhé (identifikace).

Převod OK, ale moc netuším, co vlastně to "x" přesně dělá :)

Je tu poslední problém, formát. V příloze je vzorový soubor, který je 100% validní pro použití na stránce https://adisepo.mfcr.cz/adistc/adis/idpr_epo/epo2/spol/soubor_vyber.faces (pro ni to vytvářím). Postup: Tlačítko Procházet, najít *xml soubor, Načíst. Bude to dále při případné kontrole dat hlásit chybu, neplatné DIČ, vím, je to vymyšlené. Je to soubor "voprsalek-11.xml. Vzniklo to z toho xlsm prostým kopírováním do prázdného souboru, vzor "voprsalek-01.xml" (viz příloha). Všimni si (Total Commander, F3, Možnosti, Pouze text), že ten prázdný soubor má už tři bajty, je tam tohle:



Souvisí to asi nějak s kódováním.

Z xlsm je ale vygenerován "vorpsalek-12.xml" (stejná data), který vypadá jinak, porovnej si to v TC, F3.

Zkoušel jsem si předpřipravit prázdný *xml soubor (ten "voprsalek-01.xml"), do kterého by se to zapsalo, ale to makro vytvoří nový soubor.

:i:
Šlo by to tedy upravit tak, aby se nevytvářel ten soubor z ničeho (i = FreeFile), ale aby se použil (=otevřel) už stávající *xml soubor (ten voprsalek-01.xml), do kterého by se ta data jen nakopírovala? Takto to teď dělám ručně. Měl bych (mám i dnes) dopředu připraveno 12 prázdných souborů (voprsalek 01-12) o délce 3 bajty, podle toho voprsalek-01, v buňce C21 (xlsm) by se podle měsíce určil správný soubor, který použít (tam bych ten řetězec "voprsalek-??" dostal odjinud, to není problém).

To kopírování do připraveného prázdného souboru jsem si neuvědomil, omlouvám se :-/
Snad nějak z Excelu půjde otevřít jiný neexcelovský soubor pro zápis, mimo Excel; pokud ne, asi smůla.. Jinak nevím, jak se s tím formátem (UTF-8??) vypořádat, vůbec netuším, která bije. V Notepad++ jde ten soubor asi "opravit" převodem do ANSI.

Přikládám xlsm s validními daty.
.
.
.

Prevod do txt ste poriešili...
Len malá poznámka... Excel dovoľuje obsah priamo uložiť ako txt... Nebolo treba vymýšľať žiaden kód, len uložiť ako *.txt
Samozrejme s ošetrením, aby tam bol len rozsah A1÷An (napr skopírovať tento rozsah do nového excelovského súboru a ten uložiť ako *.txt s prevzatím názvu cieľového súboru).
Akceptuje aj obsah bunky väčší ako 255 znakov.
Otázka otvárania jestvujúceho súboru s vykonaním zmien a opätovným uložením s novým obsahom nie je problém ale problém je pre mňa xml. Ten nepoznám, takže, žiaľ, ani neporadím.
Len vidím, že v Exceli je možnosť ukladať aj ako xml, ale tam už moje poznatky nesiahajú, ale predpokladám, že ak sa dodrží požadovaná štruktúra, malo by to ísť.

Otázka otvárania jestvujúceho súboru s vykonaním zmien a opätovným uložením s novým obsahom nie je problém

Pokud bych toto měl vyřešené, asi by bylo hotovo.

To xml problém není, protože to už mám pořešené. Jednotlivé xml věty se mi v excelu "skládají" samy (concatenate), nevznikají jako výstup. Prostě v buňkách A1 až A? je nějaký text, který potřebuji. Klidně to v úvahách považuj za text, *txt, je to otázka jen přípony souboru, místo *txt to musí být .xml.

<?xml version="1.0" encoding="UTF-8"?>
<Pisemnost nazevSW="EPO MF ČR" verzeSW="40.27.1">
<DPHKH1 verzePis="03.01">
<VetaD k_uladis="DPH" rok="2019" mesic="11" d_poddp="07.12.2019" khdph_forma="B" dokument="KH1" />
<VetaP c_orient="1" c_ufo="461" naz_obce="BŘECLAV" c_pop="1" c_telef="800123456" typ_ds="F" jmeno="Jan" psc="69002" stat="ČESKÁ REPUBLIKA" c_pracufo="3008" id_dats="abcdefg" dic="6001010000" sest_jmeno="František" prijmeni="Vopršálek" sest_telef="800654321" ulice="Bánhofštráse" sest_prijmeni="Novák" />
<VetaA1 c_evid_dd="68/19" c_radku="1" dic_odb="46970860" duzp="22.11.2019" kod_pred_pl="4" zakl_dane1="94500,00" />
<VetaA4 c_evid_dd="65/19" c_radku="1" dan1="6930,00" dic_odb="48452734" dppd="06.11.2019" kod_rezim_pl="0" zakl_dane1="33000,00" zdph_44="N" />
<VetaA4 c_evid_dd="70/19" c_radku="2" dan1="3327,03" dic_odb="48452734" dppd="28.11.2019" kod_rezim_pl="0" zakl_dane1="15843,00" zdph_44="N" />
<VetaA4 c_evid_dd="72/19" c_radku="3" dan1="2142,00" dic_odb="03609081" dppd="30.11.2019" kod_rezim_pl="0" zakl_dane1="10200,00" zdph_44="N" />
<VetaA5 dan1="1024,80" dan2="17196,00" zakl_dane1="4880,00" zakl_dane2="114640,00" />
<VetaB3 dan1="273,82" zakl_dane1="1303,91" />
<VetaC obrat23="63923,00" obrat5="114640,00" pln23="1303,91" pln_rez_pren="94500,00" />
</DPHKH1>
</Pisemnost>

Co řádek, to buňka A1 až A??.
V listu, z kterého to kopíruji, je to v buňkách uložené jako text. Pokud by to šlo zkopírovat A1:A? jednoduše do existujícího prázdného souboru, do toho voprsalek-01.xml, bylo by to jednoduché a bez problémů. Takto to vlastně dělám dnes, ručně. Myší obtáhnu A1:A?, ctrl-c, otevřu v Total Commanderu F4 soubor voprsalek-01.xml, tam ctrl-v a uložit.

Prázdný voprsalek-01.xml v příloze. Je prázdný, ale cosi tam je, viz můj předchozí post. Bez toho mi to nefunguje na stránkách ministerstva financí.
.
.

Otázka otvárania jestvujúceho súboru s vykonaním zmien a opätovným uložením s novým obsahom nie je problém

No jo ale myslel som tým štandardné excelovské súbory... Preto píšem, že xml je pre mňa problém, lebo ten sa odvoláva na mapy a schémy.

Ale podarilo sa mi čosi takéhoto:
Otvoriť v Exceli voprsalka (s tým, že si Excel vytvorí schému z dát xml), prekopírovať údaje zo zdrojového súboru do voprsalka (predpokladám, že majú ísť do ďalšieho riadka) s transponovaním oblasti A1÷An do riadka vo voprsalkovi, voprsalka uložiť (ale ako xml 2003) a zavrieť.
Ostáva otvorený zdrojový súbor a voprsalek.xml je prepísaný do novej podoby... Hm?
Ale takýto xml je potom otváraný v exceli... Prehliadač ho otvára v úplne inej štruktúre, čo asi nebude dobré
Nedá sa exportovať lebo nevie exportovať mapy...
A tu moje skúsenosti končia...

Nerozumíme si asi, vůbec se tím xml nezabývej, prostě to považuj jako text. To xml je jen požadovaná přípona, klidně mohla být *abc, *123, cokoliv.

Je potřeba otevřít prázdný soubor voprsalek-01.xml v Notepadu (a ne v Excelu!) a tam nakopírovat buňky A1:A? z Excelu a ten soubor voprsalek-01.xml uložit. Otázkou je, zda tohle VBA vůbec dokáže, otevřít něco mimo Excel...

Původně jsem si myslel, že nebude problém s vytvořením nového souboru (i = FreeFile), kam se to nakopíruje. To vše funguje, ale na stránkách ministerstva financí pak nesedí formát toho souboru, asi by to mělo být převedeno do ANSI. Při načtení souboru vytvořeného pomocí i = FreeFile stránky hážou chybu:

Chyba zpracování souboru: Neplatný 2. bajt 2bajtové sekvence UTF-8.

Ale ak je obsahom xml len text (vravíš, že príponu xml si nemám všímať), tak čo Ti bráni premenovať súbor.xml na súbor.txt, otvoriť ho v exceli, prekopírovať do neho obsah A1÷An, opäť ho uložiť ako súbor.txt a premenovať ho na súbor.xml? To sa urobiť dá cez makro excelu

No… co mi brání…
Neumím to:-x

Nevím jak ve VBA otevřít voprsalek-01.xml (ve stejném adresáři jako xlsm), který se pro tuto potřebu přitom přejmenuje na voprsalek-02.txt. Kopírování (když voprsalek-02 bude vlastně txt) do jiného listu bych zvládl. A pak to uložení už snad taky. Pořád ale platí, že název souboru se může měnit. Akorát bych mohl mít někde obecný mustr toho souboru, prázsný o délce 3 byte, a ten bych podle potřeby (z makra) příslušně přejmenovával (soubor01 až soubor12).

Chtěl jsem si prostě makrem usnadnit to, co teď dělám ručně :) Tuto operaci provádím určitě několiksetkrát ročně. I když je už asi pravda, že ten čas, co tomu teď věnuji, bych za rok snad tím ručním postupem dohromady nestrávil..

Vedel by som urobiť to, že na stlačenie tlačidla sa premenuje subor (podľa mena z bunky) z xml na txt, otvorí v exceli, skopírujú sa do neho údaje z oblasti A1 až An, uložia pod tým istým menom ako txt a zmení sa prípona na xml. Ale to je také znásilnenie... V skutočnosti to štruktúru xml mať nebude. Ale Ty hovoríš,že si to nemám všímať, že v skutočnosti je to textový súbor... Takto by to šlo ale xml je formát s predpísanou štruktúrou, rozhodne nejde o textový súbor, tak já ti Karle nevím...

Já taky nevím, jak se s xml má pracovat. Podle toho vzoru jsem si na jednotlivé možné "řádky" toho kontrolního hlášení udělal vzorečky typu:

="<VetaA5 "&KDYŽ(A2="";"";$A$1&"="""&HODNOTA.NA.TEXT(A2;"0,00")&""" ")&KDYŽ(B2="";"";$B$1&"="""&HODNOTA.NA.TEXT(B2;"0,00")&""" ")&KDYŽ(C2="";"";$C$1&"="""&HODNOTA.NA.TEXT(C2;"0,00")&""" ")&KDYŽ(D2="";"";$D$1&"="""&HODNOTA.NA.TEXT(D2;"0,00")&""" ")&KDYŽ(E2="";"";$E$1&"="""&HODNOTA.NA.TEXT(E2;"0,00")&""" ")&KDYŽ(F2="";"";$F$1&"="""&HODNOTA.NA.TEXT(F2;"0,00")&""" ")&"/>"

Data mám rozdělena na různých listech a nakonec se mi makrem všechny potřebné ze všech listů nasypou a sloučí (zkopírovat, vložit jinak - jen hodnoty) v konečném listu, to je ten, který teď řeším. Tam mám v A1:A? opravdu vše jako text.

A z tohoto to dostanu do xml dnes tak, že prostě A1:A? ručně zkopíruju do (v Notepadu) otevřeného prázdného souboru (toho s délkou 3 byte), tam to vložím a uložím. O xml nic nevím, ale když potom ten soubor načtu na stránkách MFČR, je prostě správný.

Jakmile jsem se pokusil načíst *txt v přímo Excelu, různě mi to pak při exportu přidávalo "", nebylo to použitelné.

Problém asi bude, zda VBA dokáže otevřít *txt, ale ne v Excelu, a do toho souboru přímo něco vložit. To bude asi kámen úrazu.
Otevřít Notepad dokážu, ActiveX tlačítkem (cesta k tomu prázdnému souboru je na listu KH v A20):

Private Sub CommandButton1_Click()
Dim lngResult As Long

lngResult = Shell("notepad " & Sheets("KH").Cells(20, 1).Value)

End Sub

Bohužel ten Notepad není aktivní, není na něm fokus, třeba by to šlo ještě ošetřit.
Tu cestu k tomu prázdnému souboru tam mám natvrdo, d:\Data\DPH\2020\xml.xml
Ještě musím popřemýšlet, jak ji poskládat, aby to bylo použitelné všeobecně. Když bude ten soubor vždy ve stejném adresáři jako xlsm, ale adresáře mohou být různé (nakopíroval bych to třeba celé jinam), abych nemusel cesty pokaždé otrocky přepisovat. Dá se nějak nějakým příkazem Excelu zjistit cesta k současnému xlsm souboru a tu zapsat do nějaké buňky? To by pomohlo, protože ten prázdný *xml bude vždy ve stejném adresáři ****)

Tak se mi to teď rozpadlo do několika kroků:
1- výběr dat na listu A1:A?, zkopírování do schránky - mám tlačítko s makrem
2- otevření toho prázdného souboru s notepadem - mám tlačítko
3- přepnu se na soubor v notepadu a tam ctrl+c, ctrl+s

****)
To jsem pořešil makrem, v buňce C36 je cesta, sloučím to (concatenate) s názvem *xml a použiju k otevření pomocí ActiveX tlačítka viz výše. Funguje, názvy i adresáře mohou být proměnlivé.

ActiveSheet.Range("C36") = Application.ActiveWorkbook.Path

----
Škoda, že správně nefunguje to řešení os Siki83 s tím pomocným souborem (i = FreeFile), že se tam nenastaví správné kódování stránky. To by bylo pak vše jednoduché.

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.

Tento řádek tam mám jako první, je to "povinná" součást toho souboru, který se nahrává na www stránky.
Problém je ale v tom, že já celou dobu v Excelu s tím nepracuji jako s xml, ale jako s textem. Akorát to mám nakopírované do souboru něco.xml (mohlo to být něco.abc, něco.cokoliv) - a to jen proto, že sobor s takovou příponou se na ty stránky dá nahrát.

Když to z Excelu do *xml nakopíruju ručně, je to OK. Když xml soubor nechám vytvořit Excelem, kopírování do něj už OK není.

Nevim, o kterem radku mluvis, ja se bavim o poslednim postu v tom vlakne (tedy o zpuobu, jakym Excel zapisuje ten soubor)...

Chci tim rict, ze bych rozhodne nepouzival kopirovani pres schranku, ale prochazel list a rovnou zapisoval ten soubor, s uz spravne nastavenym kodovanim...

Myslel jsem řádek
<?xml version="1.0" encoding="UTF-8"?>

To bych musel vše komplet předělat, protože s xml to vůbec neumím. To určitě dělat nebudu, to by mi zabralo spoustu hodin a ještě mnohem více hodin studia. Budu se muset spokojit s tím polořešením, ke kterému jsem se nakonec nějak dobral.

Otázkou je, zda v Excelu to jde, nějak z nuly takový soubor vytvořit. Protože to vyhazovalo chybu, viz výše, používám na to ten existující prázdný soubor, který kontrolou projde, je tedy asi s BOM.

Tohle všechno je už ale na mě moc, nejsem programátor, jen poučený uživatel Excelu.

Urcite to pujde pres ten ADODB.Stream, jen to nemam jak vyzkouset...

Pro zacatek bych zkusil podhodit Excelu prazdne .xml jen s BOM a upravit radek, takto:

Open ThisWorkbook.Path & "\" & Range("c21") & ".xml" For Append As #i

Slozena cesta musi ukazovat na jiz existujici .xml, kde bude jen BOM tedy soubor jen se znaky: 0xEF,0xBB,0xBF. Mozna to pojede...:-)

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