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

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é.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny