Du beschriebst noch immer nicht wie die Daten vom Dateien hergeholt werden müssen.
Code:
Sub M_snb()
Open "G:\OF\__outlk16.admx" For Binary As #1
sn = Split(Replace(InputB(LOF(1), #1), Chr(34), ""), "</policy>")
Close #1
Open "G:\OF\__outlk16.adml" For Binary As #1
sq = Split(InputB(LOF(1), #1), "</string>")
Close #1
For j = 1 To UBound(sn) - 1
st = Split(Application.Trim(sn(j)), vbCrLf)
c00 = ""
sp = Filter(Filter(Split(Replace(Replace(st(1), vbCr, ""), ">", "===="), "="), "<", 0), "$", 0)
For jj = 1 To 3
If sp(jj) <> "" Then sp(Choose(jj, 6, 5, 4)) = Trim(Split(sp(jj))(0))
Next
sv = Filter(sq, Trim(Split(sp(0))(0)), , 1)
If UBound(Filter(sv, "Explain"">")) > -1 Then sp(0) = Replace(Split(Trim(Filter(sv, "Explain"">")(0)), ">")(1), vbCr, "")
If UBound(Filter(sv, "Explain"">", 0)) > -1 Then sp(2) = Split(Trim(Filter(sv, "Explain"">", 0)(0)), ">")(1)
If UBound(Filter(st, "<decimal")) > -1 Then
sp(1) = "REG_DWORD"
sp(3) = Mid(Trim(Replace(Replace(Replace(Join(Filter(Filter(Filter(st, "value", , 1), "class", 0), "</", 0), ""), "Value> <decimal value", ""), " /> <", "; "), " />", "")), 2)
ElseIf UBound(Filter(st, "<boolean")) > -1 Then
sp(1) = "REG_DWORD(1)"
sf = Filter(st, "</", 0)
ElseIf UBound(Filter(st, "<text")) > -1 Then
sp(1) = "REG_SZ"
If sp(1) = "REG_SZ" And UBound(Filter(st, "enum")) > -1 Then
sp(1) = "REG_EXPAND_SZ"
End If
End If
Cells(j + 1, 1).Resize(, UBound(sp) + 1) = sp
Next
End Sub