< návrat zpět

MS Excel


Téma: XML rss

Zaslal/a 23.5.2016 11:42

Zdravím,

prosím jak se dá konvertovat XML např do excelu, když je jeden sloupec definován pomocí znaků

myšleno:
výsledek: 26*0.8 primární injektáž=20,80 [A]

v XML zdroji:
<vv><r><v>(26*0.4)/2*2.07 </v><t>sekundární injektáž</t><vy>A</vy></r></vv>

i chápu, co které znaky znamenají, ale udělat univerzální makro (fci) pro to, aby mi to fungovalo a finálně hodilo nějakou activecell.formula se mi nepodařilo...

jsou zde i složitější případy
<vv><r><v/><t>'- vzorový řez B</t></r><r><v>0.26+1.13+0.28+0.79+0.87+0.28+0.28+2.46+1.36 </v><t>stěna nátoku</t><vy>A</vy></r><r><v>0.82+1.11+3.85+2.17+2.12+2.73+1.22+1.43+3.93+2.78+3.85+2.24+1.89 </v><t>LS</t><vy>B</vy></r><r><v>0.32+0.3+1.43+1.36+1.24+3.66+0.95+3.59+1.77+3.63+3.65 </v><t>stěna odtoku</t><vy>C</vy></r><r><v>2.49+0.3*3+2.89+2.82+1.88</v><t>PS</t><vy>D</vy></r><r><v/><t>Celkem: </t><v>A+B+C+D</v><vy>E</vy></r></vv>

Zaslat odpověď >

#031592
avatar
ještě dolním, že se jedná o XC4.cz "šifrování"citovat
#031607
avatar
a když nic, zvládne někdo udělat univerzální makro / vzorec?

z textového řetězce vybere všechny znaky mezi <v> a </v> tyto spočte a výsledek budou opět tyto znaky a jejich vypočtená hodnota? Mezi to nějak zakomponovat i zbytek <t> = text; apod.

konkrétně např. zadání:
<vv><r><v>26/4 </v><t>15min na pakr-primární injektáž</t><vy>A</vy></r><r><v>26/4 </v><t>sekundární injektáž</t><vy>B</vy></r><r><v/><t>Celkem: </t><v>A+B</v><vy>C</vy></r></vv>

a výsledek:
174/4 15min na pakr-primární injektáž=43,50 [A] 174/4 sekundární injektáž=43,50 Celkem: A+B=87,00
icon #031609
eLCHa
Snad Vás navedu. Na to abych to řešil celé nemám čas a stejně úplně nechápu, co přesně chcete. Snad pomůže někdo jiný. Ten vzorec pro celkem byste měl zvládnout
V tom poslední případě (dneska přidané) máte <v/> a to je vyhodnoceno jako v. Pokud je to chyba - nevím - já to zatím ošetřil pomocí Replace. Také si musíte ošéfovat sám.

Sub test()
'Const csTEST As String = "<vv><r><v>(26*0.4)/2*2.07 </v><t>sekundární injektáž</t><vy>A</vy></r></vv>"
Const csTEST As String = "<vv><r><v/><t>'- vzorový řez B</t></r><r><v>0.26+1.13+0.28+0.79+0.87+0.28+0.28+2.46+1.36 </v><t>stěna nátoku</t><vy>A</vy></r><r><v>0.82+1.11+3.85+2.17+2.12+2.73+1.22+1.43+3.93+2.78+3.85+2.24+1.89 </v><t>LS</t><vy>B</vy></r><r><v>0.32+0.3+1.43+1.36+1.24+3.66+0.95+3.59+1.77+3.63+3.65 </v><t>stěna odtoku</t><vy>C</vy></r><r><v>2.49+0.3*3+2.89+2.82+1.88</v><t>PS</t><vy>D</vy></r><r><v/><t>Celkem: </t><v>A+B+C+D</v><vy>E</vy></r></vv>"

Dim xmlParser As Object
Set xmlParser = CreateObject("MSXML2.DOMDocument")

Dim bErr As Boolean
bErr = False
If Not xmlParser.LoadXML(Replace(csTEST, "<v/>", vbNullString)) Then
bErr = True
Err.Raise xmlParser.parseError.ErrorCode, , xmlParser.parseError.reason
End If

If Not bErr Then
Dim sText As String
Dim iChild As Integer, iChild2 As Integer
For iChild = 0 To xmlParser.ChildNodes.Length - 1
For iChild2 = 0 To xmlParser.ChildNodes.Item(iChild).ChildNodes.Length - 1
With xmlParser.ChildNodes.Item(iChild).ChildNodes.Item(iChild2)
sText = vbNullString
On Error Resume Next
sText = sText & .SelectSingleNode("t").Text & ": "
sText = sText & Format$(Evaluate(.SelectSingleNode("v").Text), "0.00")
sText = sText & " [" & .SelectSingleNode("vy").Text & "]"
On Error GoTo 0
End With 'xmlParser.ChildNodes.Item(iChild).ChildNodes.Item(iChild2)

Debug.Print sText
Next iChild2
Next iChild
End If

Set xmlParser = Nothing
End Sub
citovat
#031623
avatar
... a nebo regulární výrazy - viz objekt RegExp.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje