Я получаю сообщение об ошибке сказал при помощи VBA в Excel на следующий код:приложения или объект определенные ошибки в Excel VBA
Private Sub XMLGen(mapRangeA, mapRangeB, ticketSize, mapping)
Dim fieldOneArr As Variant
Dim fieldTwoArr As Variant
Dim row As Long
Dim column As Long
Dim infoCol As Long
Dim endInfo As Long
Dim objDom As DOMDocument
Dim objNode As IXMLDOMNode
Dim objXMLRootelement As IXMLDOMElement
Dim objXMLelement As IXMLDOMElement
Dim objXMLattr As IXMLDOMAttribute
Set ws = Worksheets("StockData")
Dim wsName As String
Set objDom = New DOMDocument
If ticketSize = 8 Then
wsName = "A7Tickets"
ElseIf ticketSize = 16 Then
wsName = "A8Tickets"
Else
wsName = "A5Tickets"
End If
Set ps = Worksheets(wsName)
'create processing instruction
Set objNode = objDom.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
objDom.appendChild objNode
'create root element
Set objXMLRootelement = objDom.createElement("fields")
objDom.appendChild objXMLRootelement
'create Attribute to the Field Element and set value
Set objXMLattr = objDom.createAttribute("xmlns:xfdf")
objXMLattr.NodeValue = "http://ns.adobe.com/xfdf-transition/"
objXMLRootelement.setAttributeNode objXMLattr
infoCol = 1
fieldOneArr = Worksheets(mapping).range(mapRangeA)
fieldTwoArr = Worksheets(mapping).range(mapRangeB)
For row = 1 To UBound(fieldOneArr, 1)
For column = 1 To UBound(fieldOneArr, 2)
'create Heading element
Set objXMLelement = objDom.createElement(fieldOneArr(row, column))
objXMLRootelement.appendChild objXMLelement
'create Attribute to the Heading Element and set value
Set objXMLattr = objDom.createAttribute("xfdf:original")
objXMLattr.NodeValue = (fieldTwoArr(row, column))
objXMLelement.setAttributeNode objXMLattr
objXMLelement.Text = ps.Cells(row, infoCol)
infoCol = infoCol + 1
endInfo = endInfo + 1
If endInfo = 4 Then
infoCol = 1
End If
Next column
Next row
'save XML data to a file
If ticketSize = 2 Then
objDom.Save ("C:\ExportTestA5.xml")
MsgBox "A5 XML created"
ElseIf ticketSize = 8 Then
objDom.Save ("C:\ExportTestA7.xml")
MsgBox "A7 XML created"
Else
objDom.Save ("C:\ExportTestA8.xml")
MsgBox "A8 XML created"
End If
End Sub
Когда я ударил отладки он указывает на этой линии:
fieldOneArr = Worksheets(mapping).range(mapRangeA)
Я знаю, что. Ранг должен быть в верхнем регистре, но он постоянно устанавливает его в нижний регистр автоматически, когда я его исправляю.
Этот код предназначен для создания XML-файла, а затем записывает данные из выбранного листа (на основе переменной ticketSize) в правильные поля XML. Следовательно, у меня есть таблица сопоставлений, из которой я пишу имена полей и атрибутов, а затем записываю информацию из правильного листа размера листа в текстовое свойство элемента.
Вы не определили тип mapRangeA в своей функции, что помогло бы изолировать ошибку. Нам нужно знать, что вы используете для этой функции, поскольку ошибка будет генерироваться, если параметр диапазона недопустим. – grahamj42
О, это помогло. В моем Sub, который создает и заполняет переменные mapRange (типа String), один из моих операторов If не присваивал значение mapRangeA или mapRangeB. Благодаря! – user2151763