I found a VBA function that parses Adobe PDF Form XML data (.xfdf) into an Excel worksheet. When this code is used in a separate Workbook without anything else it works fast (<1 sec). However when I use it in the large workbook that I use to generate individual PDF reports it's extremely slow (~5 minutes!!)
I've tried adding Application.ScreenUpdating = False, Application.EnableEvents = False, Application.Calculation = xlCalculationManual and Application.Volatile (False), but it didn't help.
Any ideas are very welcome. (I'm a VBA beginner, able to copy and adapt scripts I find for my purposes...)
This is the code used:
Formula:
Sub ReadXML()
Call fnReadXMLByTags
End Sub
Function fnReadXMLByTags()
Dim mainWorkBook As Workbook
Set mainWorkBook = ActiveWorkbook
bestand = mainWorkBook.Sheets("Blad6").Range("G10").Value
mainWorkBook.Sheets("Blad6").Range("A:B").Clear
Set oXMLFile = CreateObject("Microsoft.XMLDOM")
XMLFileName = bestand
oXMLFile.Load (XMLFileName)
Set ValueNodes = oXMLFile.SelectNodes("/xfdf/fields/field/value/text()")
mainWorkBook.Sheets("Blad6").Range("A1,B1").Interior.ColorIndex = 40
mainWorkBook.Sheets("Blad6").Range("A1,B1").Borders.Value = 1
mainWorkBook.Sheets("Blad6").Range("A" & 1).Value = "Vraag"
mainWorkBook.Sheets("Blad6").Range("B" & 1).Value = "Antwoord"
For i = 0 To (ValueNodes.Length - 1)
Antwoord = ValueNodes(i).NodeValue
'mainWorkBook.Sheets("Blad6").Range("B" & i + 2).Borders.Value = 1
mainWorkBook.Sheets("Blad6").Range("B" & i + 2).Value = Antwoord
mainWorkBook.Sheets("Blad6").Range("B" & i + 2).NumberFormat = "#"
Next
'Reading the Attributes
Set Nodes_Attribute = oXMLFile.SelectNodes("/xfdf/fields/field")
For i = 0 To (Nodes_Attribute.Length - 1)
Vraag = Nodes_Attribute(i).getAttribute("name")
'mainWorkBook.Sheets("Blad6").Range("A" & i + 2).Borders.Value = 1
mainWorkBook.Sheets("Blad6").Range("A" & i + 2).Value = Vraag
Next
End Function
Bookmarks