XML datoteke to excel

Pomoč pri delu z MS Excelom
Odgovori
Sebastijan
Prispevkov: 17
Pridružen: To Jul 26, 2005 9:55 am
Kontakt:

XML datoteke to excel

Odgovor Napisal/-a Sebastijan »

Pozdrav

Zanimam me kako bi lahko bral XML-je (določeno vrednost enega taga)
in iz tega potem naredil ven seznam v excelu.

Naredil sem že array poti do datotek ki se nahajajo v mapi.

Zdaj bi pa rad odpiral XML-je ki se nagajajo v mapi in prenašal določeno vrednost taga/ov v excel. Npr število artikla <StevilkaArtikla>3831008223026</StevilkaArtikla>

lp

Sebastijan
Sebastijan
Prispevkov: 17
Pridružen: To Jul 26, 2005 9:55 am
Kontakt:

Odgovor Napisal/-a Sebastijan »

nekaj sem resil

SourceString = txtOutput
tag = "StevilkaKomunikacije"
txtOutput = Mid$(SourceString, InStr(SourceString, "<" & tag & ">") + Len("<" & tag & ">"), (InStr(SourceString, "</" & tag & ">")) - (InStr(SourceString, "<" & tag & ">") + Len("<" & tag & ">")))
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

pod predpostavko, da se v XML datoteki (c:\test.xml) nahaja sledeča vsebina:

Koda: Izberi vse

<?xml version="1.0" encoding="windows-1250"?>

<test>
  <ime>Matjaž</ime>
  <bivanje>
		<kraj>Celje</kraj>
	</bivanje>	
</test>
Potem, vam sledeča funkcija prebere podatke iz njega.

Koda: Izberi vse

Sub BeriXML()
  Dim XMLDokument As New DOMDocument

  XMLDokument.resolveExternals = True
  XMLDokument.validateOnParse = True
  XMLDokument.async = False
  
  XMLDokument.Load "c:\test.xml"
  
  Dim koren As IXMLDOMElement
  Set koren = XMLDokument.documentElement
  
  Debug.Print koren.tagName
  Debug.Print koren.Text
  
  Dim ime As MSXML.IXMLDOMNodeList
  Set ime = koren.getElementsByTagName("ime")
  
  Debug.Print ime(0).FirstChild.Text
  
  Dim kraj As MSXML.IXMLDOMNodeList
  Set kraj = koren.getElementsByTagName("kraj")
  
  Debug.Print kraj(0).FirstChild.Text
End Sub
Tukaj mate delujoč primer, ki ga pač prilagajajte vašim potrebam.TODA, da bi vam stvar delovala morate v VBA urejevalniku izbrati TOOLS/References ter tam označiti 'Microsoft XML xxx', kje xxx predstavlja neko številko (čimvečjo :) )
lp,
Matjaž Prtenjak
Administrator
Sebastijan
Prispevkov: 17
Pridružen: To Jul 26, 2005 9:55 am
Kontakt:

Odgovor Napisal/-a Sebastijan »

Matjaž tule se mi zadeva ustavi

User defined type not defined

Dim ime As MSXML.IXMLDOMNodeList

lp
S
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Ja, možno :(, Izbrišite predpono MSXML in stvar bi morala delovati:

Koda: Izberi vse

  Dim ime As IXMLDOMNodeList
lp,
Matjaž Prtenjak
Administrator
Sebastijan
Prispevkov: 17
Pridružen: To Jul 26, 2005 9:55 am
Kontakt:

Odgovor Napisal/-a Sebastijan »

nikakor mi ne rata, poizkusil se tudi z stepinto

Potem sem spremljal malo kaj se dogaja in se videl da v phraserrot napiše:

: reason : "Invalid xml declaration." : String

ne vem če je to glavni vzrok sicer

TUdi po tistem ko sem zbrisal iz prejšnjega posta,
se mi ustavi pri: ebug.Print koren.tagName (object variable or with block variable not set)

lp

Sebastijan
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Očitno imate napačno XML datoteko. Poskusite jo odpreti v Internet Explorerju, ki vam bo napisal, kaj je narobe.
lp,
Matjaž Prtenjak
Administrator
Sebastijan
Prispevkov: 17
Pridružen: To Jul 26, 2005 9:55 am
Kontakt:

Odgovor Napisal/-a Sebastijan »

xml je kar isti ki ste ga vi dal, saj sem hotel najprej testirati na vaši datoteki. tudi v Ieplorerju sem se normalno odpre brez napak

lp

SEBASTIJAN
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Skozi progam se premikajte s pomočjo tipke (F8 == Step Into) ter:
  1. Povejte v kateri vrstici se program ustavi in s kakšno napako (točen tekst napake)
  2. Hkrati poglejte in napišite kakšne vrednosti imajo posamezne spremenljivke programa (to vidite v oknu Locals)
lp,
Matjaž Prtenjak
Administrator
Odgovori