Erreur d'exécution '13' Macro VBA Excel

J'ai créé cette macro et j'ai une erreur d'Exécution '13', à la ligne

Set objDomAttribute = objDomElement3.Attributes.setNamedItem(objDomDoc.createAttribute("Name4"))

Mon fichier Excel a 2727 lignes. Je l'ai testé pour moins de lignes, et il fonctionne parfaitement, mais pour 2727 il ne fonctionne pas. Que dois-je faire pour résoudre cela?

Option Explicit
Public Sub MakeXMLWithDom() 
Dim Q As String 
Q = Chr$(34) 
Dim objDomDoc As New MSXML2.DOMDocument60 
objDomDoc.LoadXML ("<?xml version=" & Q & "1.0" & Q & "encoding=" & Q & "utf-8" & Q & "?>") 
Dim objDomElement As MSXML2.IXMLDOMElement 
Dim objDomAttribute As MSXML2.IXMLDOMAttribute 
Dim nodeSet As MSXML2.IXMLDOMNodeList 
Set objDomElement = objDomDoc.createElement("Containers") 
Set objDomElement = objDomDoc.appendChild(objDomElement) 
'finding the amount of rows in the excel
Dim numofrows As Long 
numofrows = Worksheets("EXAMPLE").Range("E1").Offset(Worksheets("EXAMPLE").Rows.Count - 1, 0).End(xlUp).Row 
Dim iRow As Integer 
Dim Value11 As Variant 
Dim Value12 As Variant 
Dim Value13 As Variant 
Dim objDomElement1 As Variant
Dim objDomElement2 As Variant
Dim objDomElement3 As Variant
For iRow = 10 To (numofrows + 1) 
If Worksheets("EXAMPLE").Cells(iRow - 1, 5) = Worksheets("EXAMPLE").Cells(iRow, 5) Then 
Value11 = Worksheets("EXAMPLE").Cells(iRow - 1, 11).Value & ", " & Worksheets("EXAMPLE").Cells(iRow, 11).Value 
Value12 = Worksheets("EXAMPLE").Cells(iRow - 1, 12).Value & ", " & Worksheets("EXAMPLE").Cells(iRow, 12).Value 
Value13 = Worksheets("EXAMPLE").Cells(iRow - 1, 13).Value & ", " & Worksheets("EXAMPLE").Cells(iRow, 13).Value 
Else 
Value11 = Worksheets("EXAMPLE").Cells(iRow, 11).Value 
Value12 = Worksheets("EXAMPLE").Cells(iRow, 12).Value 
Value13 = Worksheets("EXAMPLE").Cells(iRow, 13).Value 
End If 
If Worksheets("EXAMPLE").Cells(iRow, 5) <> Worksheets("EXAMPLE").Cells(iRow + 1, 5) And Worksheets("EXAMPLE").Cells(iRow, 3) <> "" And Worksheets("EXAMPLE").Cells(iRow, 5) <> "" Then 
Set objDomElement1 = objDomElement.appendChild(objDomDoc.createElement("Data")) 
Set objDomAttribute = objDomElement1.Attributes.setNamedItem(objDomDoc.createAttribute("Relevant")) 
objDomElement1.Attributes.getNamedItem("Relevant").Text = "True" 
Set objDomElement2 = objDomElement1.appendChild(objDomDoc.createElement("Info")) 
Set objDomElement3 = objDomElement2.appendChild(objDomDoc.createElement("Part")) 
Set objDomAttribute = objDomElement3.Attributes.setNamedItem(objDomDoc.createAttribute("Name1")) 
Set objDomAttribute = objDomElement3.Attributes.setNamedItem(objDomDoc.createAttribute("Name2")) 
Set objDomAttribute = objDomElement3.Attributes.setNamedItem(objDomDoc.createAttribute("Name3")) 
Set objDomAttribute = objDomElement3.Attributes.setNamedItem(objDomDoc.createAttribute("Name4")) 
objDomElement3.Attributes.getNamedItem("Name1").Text = Trim$(Worksheets("EXAMPLE").Cells(iRow, 5).Value) 
objDomElement3.Attributes.getNamedItem("Name2").Text = Value11 
objDomElement3.Attributes.getNamedItem("Name3").Text = Value12 
objDomElement3.Attributes.getNamedItem("Name4").Text = Value13 
End If 
Next iRow 
objDomDoc.Save ("c:\Example.xml") 
End Sub
  • C'est une "erreur" incompatibilité de Type. Déclarer toutes tes variables à l'aide de Dim va vous aider à trouver la cause de cette erreur. Vous n'avez pas déclaré objDomElement3, par exemple. Vous devez vous forcer à le faire pour toutes les variables, toujours par écrit Option Explicit tout en haut de votre module.
  • M. Corbett, j'ai écouté vos conseils, j'ai ajouté l'Option Explicite, j'ai déclaré la objDomElements mais j'ai toujours la même erreur à la même ligne.
  • Lorsque vous entrez votre code dans le mode de débogage, regardez la fenêtre variables locales. Quel est le type de toutes les variables impliquées dans cette ligne? Sont-ils comme prévu?
  • Pour le Value13 il dit de la Valeur d'erreur: Erreur de 2015 et le Type: Variante/Erreur je ne sais pas si tu veux dire que parce que je suis nouveau dans le codage. 🙂
InformationsquelleAutor Maggie11 | 2012-11-29