XML-schema toevoegen en XML exporteren

  • Onderwerp starter Onderwerp starter ML71
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ML71

Gebruiker
Lid geworden
10 mrt 2006
Berichten
70
Ik ben bezig met het maken van een publicatiekalender. Uit een bronbestand met nog veel meer informatie wordt de Excel-tabel 'Temppubned.xls' uit de bijlage gegenereerd na diverse bewerkingen (zoals sorteren). De bedoeling is vervolgens dat het XML-schema uit de bijlage, 'publicatiekalender-schema.xml', wordt gekoppeld aan dit excel-bestand. Daarna moet de kalender als XML-bestand worden geexporteerd.

Om handmatige handelingen te voorkomen wil ik ook het koppelen van het schema en het exporteren met VBA doen, maar ik kom er niet uit hoe dat in zijn werk gaat. Met het opnemen van een macro kom ik niet veel verder helaas.

Wie weet raad?

Bekijk bijlage publicatiekalender_tbv_xml.zip
 
Je bijlage is een gewoon xml bestand en geen schema. Schema's hebben gewoonlijk de extensie xsd.
Tip: bestudeer onderstaand artikel en probeer alles eerst eens uit via de excel userinterface. Als je dit beheerst en via de userinterface je eigen schema kunt koppelen en je xml-gegevens kunt exporteren kun je de volgende stap maken en het via vba doen. De macro recorder helpt je hier bij. Overigens, het koppelen van een schema is veelal een eenmalig werkje. Vba heeft dan weinig toegevoegde waarde.
https://support.office.com/en-us/ar...fc6-bdd0-f8e40739f880&ui=en-US&rs=en-US&ad=US
 
ML71,

Een XML bestand is eigenlijk gewoon een simpel tekstbestand met een vreemde opbouw om de gegevens uit elkaar
te kunnen houden. Met een stukje VBA kun je gewoon een op basis van je tabel een tekstbestand maken die je
wegschrijft als xml bestand. Hierbij een voorbeeld:
Code:
Sub XML_maken()

Dim STekst As String
Dim nLoper As Integer

'Schrijven koprecord
STekst = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & vbCrLf
STekst = STekst & "<pubned xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" & vbCrLf

'Door de tabel lopen en de rijen lezen
With Sheets("Publicatiekalender Statistieken").Range("A3")
    Do While .Offset(nLoper, 3) <> ""
        STekst = STekst & "<record>" & vbCrLf
        STekst = STekst & "<dag>" & .Offset(nLoper, 0) & "</dag>" & vbCrLf
        STekst = STekst & "<maand>" & .Offset(nLoper, 1) & "</maand>" & vbCrLf
        STekst = STekst & "<jaar>" & .Offset(nLoper, 2) & "</jaar>" & vbCrLf
        STekst = STekst & "<onderwerp>" & .Offset(nLoper, 3) & "</onderwerp>" & vbCrLf
        STekst = STekst & "<periodiciteit>" & .Offset(nLoper, 4) & "</periodiciteit>" & vbCrLf
        STekst = STekst & "<verslagperiode>" & .Offset(nLoper, 5) & "</verslagperiode>" & vbCrLf
        STekst = STekst & "<tabel>" & .Offset(nLoper, 6) & "</tabel>" & vbCrLf
        STekst = STekst & "</record>" & vbCrLf
        nLoper = nLoper + 1
    Loop
    STekst = STekst & "</pubned>"
End With

'Tekst opgesteld nu alleen nog wegschrijven
Open ActiveWorkbook.Path & "\Publicatiekalender.xml" For Output As #1
Print #1, STekst
Close #1

MsgBox "Gegevens als XML bestand weggeschreven" & vbCrLf & _
        "In dezelfde subdirectory als dit bestand" & _
        vbCrLf & "naam: Publicatiekalender.xml", vbInformation, "Klaar."

End Sub

Veel Succes.
 
Ik ben er inderdaad uit, Door met redelijk eenvoudige via code een textbestand te maken. Dank voor de suggesties!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan