Я пытаюсь прочитать файл XML и изменить даты в XML, используя другой файл excel, и выполнить vlookup для этого файла excel. После перезаписи даты я сохраняю XML файл.
, но при открытии файла Excel получаю Error MisMatch Type 13 error . Я играл в тусклые типы, но вроде ничего не работает. Может кто поможет?
Вот код:
Function GetFile() As String
Application.ScreenUpdating = False
'**Open XML'**
Dim XML_in As Variant
XML_in = Application.GetOpenFilename(FileFilter:="XML (*.XML), *.XML", Title:="Select XML Order List")
If XML_in = False Then Exit Sub
GetFile = XML_in
Set oXMLFile = CreateObject("Msxml2.DOMDocument.3.0")
XMLFileName = XML_in 'XML IN Filename'
Debug.Print XML_in
'**Manipulate oXML'**
oXMLFile.Load (XMLFileName) 'Read XML'
Set xmlGroup = oXMLFile.SelectNodes("/ppr:pprdata/ppr:Group") 'Navigate to ppr:Group'
Set xmlOrderLists = xmlGroup(1) 'Navigate to <ppr:Group name="Order lists">'
Set xmlProdPgm = xmlOrderLists.SelectNodes("ppr:ProductionProgram")
Set xmlFirmOrders = xmlProdPgm(0).ChildNodes
'**Open AMS File'**
Dim src As Variant '
Set src = Application.GetOpenFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="Open AMS File")
If src = False Then Exit Sub
'Workbooks.Open("AMS Schedule example.xlsx", True, True)
Set Sheet = src.Worksheets("Sheet1")
Set ran = Sheet.range("A1:B9")
For i = 1 To xmlFirmOrders. Length - 1
Debug.Print xmlFirmOrders(i).Attributes.getNamedItem("ppr:id").Value
Set xmlNumber = xmlFirmOrders(i).SelectSingleNode("ppr:number")
Set xmlStartTime = xmlFirmOrders(i).SelectSingleNode("ppr:startTime")
xmlStartTime.Text = Application.WorksheetFunction.IfError(Application.WorksheetFunction.vlookup(xmlNumber, ran, 2, 0), "NOTFOUND") 'Update ppr:Starttime'
Next i
'**Close AMS File**
src.Close False
Set src = Nothing
'**Save XML'**
Dim XML_out As Variant
XML_out = Application.GetSaveAsFilename(FileFilter:="XML (*.XML), *.XML", Title:="Output XML File for Avix")
If XML_out = False Then Exit Sub
GetFile = XML_out
oXMLFile.Save XML_out
Debug.Print XML_out
Application.EnableEvents = True
Application.ScreenUpdating = True
End Function