Excel

MatrixFrame en Excel

Voor fanatieke Excel-gebruikers is het efficiënt en naadloos uitwisselen van gegevens met andere systemen van groot belang. Een van de meest effectieve manieren om dit te bereiken is via het MXML-formaat. In dit artikel ontdek je hoe het uitwisselen van gegevens tussen Excel en MXML je workflow kan automatiseren.

Gegevensuitwisseling:

Met behulp van MXML kunnen Excel-gebruikers gegevens uit Excel rechtstreeks importeren naar MatrixFrame. Dit betekent dat je de complexe en tijdrovende taak van handmatige gegevensinvoer kunt vermijden. Je kunt bijvoorbeeld belastinggevallen, belastingen, liggerlengtes, steunpunten en andere constructieve eigenschappen van je project exporteren naar MXML en deze eenvoudig importeren in MatrixFrame.

 

   ```vba

  Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

   ```

2. Laad het XML-bronbestand (XMLSourcePath) of het XML-gebruikte bestand (XMLUsedPath) in het xmlDoc-object met behulp van de `load`-methode:

   ```vba

   xmlDoc.load(XMLSourcePath)

   ```

 

3. Selecteer specifieke knooppunten of elementen in het XML-document met behulp van de `SelectSingleNode`- of `SelectNodes`-methoden. Hiermee kun je door de XML-structuur navigeren en specifieke knooppunten targeten:

   ```vba

   Set xmlNode = xmlDoc.SelectSingleNode("//someNode")

   Set xmlNodeList = xmlDoc.SelectNodes("//someNode")

   ```

 

4. Nadat je het gewenste knooppunt hebt geselecteerd, kun je de waarde van attributen of elementen wijzigen door toegang te krijgen tot de eigenschappen of methoden van het XML-knooppuntobject. Hiermee kun je nieuwe waarden toekennen aan attributen of elementen:

   ```vba

   xmlNode.attributeName = "newValue"

   xmlNode.text = "newValue"

   ```

 

5. Sla het bijgewerkte XML-document op naar een bestand met behulp van de `Save`-methode:

   ```vba

   xmlDoc.Save(XMLUsedPath)

   ```

 

Hier is een voorbeeld van hoe je waarden naar een MXML-bestand kunt schrijven: 
Zorg ervoor dat je de juiste verwijzingen hebt toegevoegd aan jouw VBA-project (Microsoft XML, v6.0)!.

```vba

Sub WriteValuesToMXML()

    Dim xmlDoc As Object

    Dim xmlNode As Object

    Dim XMLUsedPath As String

    Dim newValue As String

   

    ' Stel het pad in naar het XML-gebruikte bestand

    XMLUsedPath = "C:\Pad\Naar\Jouw\MXMLBestand.xml"

   

    ' Maak een nieuw XML DOM-document

    Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

   

    ' Laad het XML-gebruikte bestand

    xmlDoc.load(XMLUsedPath)

   

    ' Selecteer het gewenste knooppunt in het XML-document

    Set xmlNode = xmlDoc.SelectSingleNode("//someNode")

   

    ' Vraag de gebruiker om een nieuwe waarde in te voeren

    newValue = InputBox("Voer een nieuwe waarde in:")

   

    ' Wijs de nieuwe waarde toe aan het geselecteerde knooppunt

    xmlNode.Text = newValue

   

    ' Sla het bijgewerkte XML-document op

    xmlDoc.Save XMLUsedPath

   

    ' Geef een melding aan de gebruiker dat de waarden zijn bijgewerkt

    MsgBox "De waarden zijn succesvol bijgewerkt in het MXML-bestand.", vbInformation

End Sub

```

Met dit voorbeeld kun je een bestaand XML-bestand openen, een specifiek knooppunt selecteren en een nieuwe waarde toewijzen aan dat knooppunt. Het bijgewerkte XML-document wordt vervolgens opgeslagen naar het opgegeven pad.
Voer deze macro uit en volg de instructies in het invoervak om een nieuwe waarde toe te voegen aan het geselecteerde knooppunt in het XML-bestand. Controleer daarna het XML-bestand om te zien of de waarde succesvol is bijgewerkt.

 

 

MXML navigeren vanuit Excel

Om waarden in een MXML-bestand te targeten vanuit VBA, kunnen we gebruikmaken van de MSXML2.DOMDocument-objectbibliotheek en XPath-uitdrukkingen. Hier zijn enkele voorbeelden van hoe je specifieke waarden kunt targeten in het MXML-bestand vanuit VBA:
 1. Om de naam van het eerste belastinggeval te targeten en op te halen, kun je de volgende code gebruiken:
 

```vba

Dim xmlDoc As Object

Dim nodeName As String

 

' Maak een nieuw XML DOM-document

Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

 

' Laad het MXML-bestand

xmlDoc.Load "C:\Pad\Naar\Jouw\MXMLBestand.xml"

 

' Target het knooppunt en haal de naam op

nodeName = xmlDoc.SelectSingleNode("/mxml/cases/case[@id='1']").Attributes.getNamedItem("name").Text

 

' Geef de naam weer in een berichtvenster

MsgBox "De naam van het eerste belastinggeval is: " & nodeName

```

 2. Om de waarde van de tweede belasting in het eerste belastinggeval te targeten en op te halen, kun je de volgende code gebruiken:

 ```vba

Dim xmlDoc As Object

Dim loadValue As String

 

' Maak een nieuw XML DOM-document

Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")

 

' Laad het MXML-bestand

xmlDoc.Load "C:\Pad\Naar\Jouw\MXMLBestand.xml"

 

' Target het knooppunt en haal de waarde op

loadValue = xmlDoc.SelectSingleNode("/mxml/cases/case[@id='1']/loads/load[2]/@value").Text

 

' Geef de waarde weer in een berichtvenster

MsgBox "De waarde van de tweede belasting in het eerste belastinggeval is: " & loadValue

```

 Met deze voorbeelden kun je specifieke waarden targeten in een MXML-bestand vanuit VBA en ze gebruiken in jouw eigen code voor verdere verwerking of weergave.

 

Wijzigen en toevoegen van waardes


Om een waarde in een MXML-bestand te wijzigen, moet je het specifieke knooppunt targeten waar de waarde zich bevindt en de waarde toewijzen aan het juiste attribuut of element. Hier zijn enkele stappen om een waarde te wijzigen in een MXML-bestand:

1. Navigeer naar het gewenste knooppunt in het MXML-bestand met behulp van XPath-notatie. Je kunt de `SelectSingleNode`-methode gebruiken om het knooppunt te selecteren. Bijvoorbeeld:

   ```vba
   Set xmlNode = xmlDoc.SelectSingleNode("//knooppunt[@attribuut='waarde']")
   ```

   Hiermee selecteer je het knooppunt met een specifiek attribuut en waarde.

2. Wijs een nieuwe waarde toe aan het geselecteerde knooppunt. Afhankelijk van het type knooppunt (attribuut of element) en de gewenste waarde, kun je de `Text`-eigenschap of een specifiek attribuut van het knooppunt wijzigen. Bijvoorbeeld:

   ```vba
   xmlNode.Text = "nieuwe waarde" ' Voor het wijzigen van de tekstwaarde van een element

   xmlNode.Attributes.getNamedItem("attribuut").Text = "nieuwe waarde" ' Voor het wijzigen van een attribuutwaarde
   ```

3. Sla het bijgewerkte MXML-bestand op naar een bestand. Gebruik de `Save`-methode om het XML-document op te slaan met de bijgewerkte waarden. Bijvoorbeeld:

   ```vba
   xmlDoc.Save "C:\Pad\Naar\Jouw\MXMLBestand.mxml"
   ```

Met deze stappen kun je succesvol waarden wijzigen in een MXML-bestand vanuit VBA.

Nieuwe waarden toevoegen aan een MXML-bestand:
Om nieuwe waarden toe te voegen aan een MXML-bestand, moet je een nieuw knooppunt maken en dit knooppunt toevoegen aan de juiste positie in de hiërarchie van het MXML-bestand. Hier zijn enkele stappen om nieuwe waarden toe te voegen aan een MXML-bestand:

1. Maak een nieuw knooppunt met behulp van de `CreateElement`-methode van het XML DOM-document. Bijvoorbeeld:

   ```vba
   Set newElement = xmlDoc.CreateElement("nieuwKnooppunt")
   ```

2. Wijs waarden toe aan de attributen of tekst waarden van het nieuwe knooppunt. Gebruik de eigenschappen of methoden van het nieuwe knooppuntobject om de gewenste waarden in te stellen. Bijvoorbeeld:

   ```vba
   newElement.SetAttribute "attribuut", "waarde" ' Voor het toewijzen van een attribuutwaarde
   newElement.Text = "tekstwaarde" ' Voor het toewijzen van een tekstwaarde aan een element
   ```

3. Voeg het nieuwe knooppunt toe aan het gewenste ouderknooppunt. Gebruik de `appendChild`-methode van het ouderknooppunt om het nieuwe knooppunt toe te voegen. Bijvoorbeeld:

   ```vba
   Set parentNode = xmlDoc.SelectSingleNode("//ouderKnooppunt")
   parentNode.appendChild newElement
   ```

4. Sla het bijgewerkte MXML-bestand op naar een bestand. Gebruik de `Save`-methode om het XML-document op te slaan met het toegevoegde knooppunt. Bijvoorbeeld:

   ```vba
   xmlDoc.Save "C:\Pad\Naar\Jouw\MXMLBestand.xml"
   ```

Met deze stappen kun je met succes nieuwe waarden toevoegen aan een MXML-bestand vanuit VBA.

Onthoud dat de structuur van een MXML-bestand kan variëren, afhankelijk van het specifieke gebruik en de specificaties van de toepassing. Zorg ervoor dat je de juiste knooppunten en attributen identificeert en wijzigingen aanbrengt volgens de vereiste structuur van het MXML-bestand.

Hier is een voorbeeld van hoe je waarden kunt wijzigen en nieuwe waarden kunt toevoegen aan een MXML-bestand vanuit VBA:

```vba
Sub ModifyMXMLValues()
    Dim xmlDoc As Object
    Dim xmlNode As Object
    Dim XMLFilePath As String
    
    ' Stel het pad naar het MXML-bestand in
    XMLFilePath = "C:\Pad\Naar\Jouw\MXMLBestand.mxml"
    
    ' Maak een nieuw XML DOM-document
    Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
    
    ' Laad het MXML-bestand
    xmlDoc.Load XMLFilePath
    
    ' Wijzig een bestaande waarde in het MXML-bestand
    Set xmlNode = xmlDoc.SelectSingleNode("//knooppunt[@attribuut='waarde']")
    xmlNode.Text = "nieuwe waarde"
    
    ' Voeg een nieuw knooppunt toe aan het MXML-bestand
    Dim newElement As Object
    Set newElement = xmlDoc.CreateElement("nieuwKnooppunt")
    newElement.SetAttribute "attribuut", "waarde"
    newElement.Text = "tekstwaarde"
    
    Dim parentNode As Object
    Set parentNode = xmlDoc.SelectSingleNode("//ouderKnooppunt")
    parentNode.appendChild newElement
    
    ' Sla het bijgewerkte MXML-bestand op
    xmlDoc.Save XMLFilePath
    
    ' Geef een melding aan de gebruiker dat de waarden zijn bijgewerkt
    MsgBox "De waarden zijn succesvol gewijzigd en het nieuwe knooppunt is toegevoegd aan het MXML-bestand.", vbInformation
End Sub
```

Zorg ervoor dat je het pad naar jouw eigen MXML-bestand (XMLFilePath) aanpast in de code. Voer deze macro uit en de waarden in het MXML-bestand worden gewijzigd en het nieuwe knooppunt wordt toegevoegd volgens de opgegeven instructies.