Macro no se ejecuta bien en calc

una macro que hice en excel office 2010, no me funciona en libre office
esta es la macro
sale error “no se encontraron archivos .xml”, y si hay este tipo de archivos
'macro para en listar los XML que va a leer
'Adapatado por Luis Reyes
Dim fs, carpeta, archivo, subcarpeta As Object
contador = 2 'determinar en que fila comenzará a colocar la ruta y nombre de los XML
Set fs = CreateObject(“Scripting.FileSystemObject”)
With Application.FileDialog(msoFileDialogFolderPicker) 'se obtiene la ruta la carpeta
If .Show = -1 Then
ruta = .SelectedItems(1)
Range(“V1”).Value = ruta & “”
End If
End With

If ruta = "" Then
    Exit Sub
End If

Set carpeta = fs.GetFolder(ruta)
For Each archivo In carpeta.Files
If Right(archivo, 4) = “.xml” Then
Range(“AD” & contador).Value = ruta & “” & archivo.Name
contador = contador + 1
End If
If Right(archivo, 4) = “.XML” Then
Range(“AD” & contador).Value = ruta & “” & archivo.Name
contador = contador + 1
End If
Next
If Application.WorksheetFunction.CountA(Columns(30)) <= 1 Then
MsgBox “No se encontro ningún archivo *.XML” & Chr(10) & ruta, vbCritical, “Importar datos CFDI”
End
End If

Call Lectura_CFDI 'ejecuta la macro que lee los XML
End Sub

Private Sub Lectura_CFDI()
'Adapatado por Luis Reyes
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
.DisplayStatusBar = False

Dim Concepto As String
Dim pctCompl As Single
Set DocumentoXML = New DOMDocument
Set r = Range(“AD2”).CurrentRegion 'determina apartir de donde comienza a contar
filas = r.Rows.Count

For i = 2 To filas + 6 'número de documentos que va a leer

DocumentoXML.Load ("" & Cells(i, 30) & “”)

Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante")
On Error Resume Next
For Each Nodo In ListaNodo
Subtotal = Val(Nodo.Attributes.getNamedItem(“SubTotal”).Text)
Fecha = Mid(Nodo.Attributes.getNamedItem(“Fecha”).Text, 1, 10)
Serie = Nodo.Attributes.getNamedItem(“Serie”).Text
Folio = Serie & " - " & Nodo.Attributes.getNamedItem(“Folio”).Text
Total = Val(Nodo.Attributes.getNamedItem(“Total”).Text)
Descuento = Val(Nodo.Attributes.getNamedItem(“Descuento”).Text)
FormaPago = Val(Nodo.Attributes.getNamedItem(“FormaPago”).Text)
TipoDeComprobante = Nodo.Attributes.getNamedItem(“TipoDeComprobante”).Text
Moneda = Nodo.Attributes.getNamedItem(“Moneda”).Text
Next Nodo

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘Nombre del emisor’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Emisor")
For Each Nodo In ListaNodo
Proveedor = Nodo.Attributes.getNamedItem(“Nombre”).Text
RFC = Nodo.Attributes.getNamedItem(“Rfc”).Text
Next Nodo
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘Conceptos’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto")
For Each Nodo In ListaNodo
Concepto = Concepto & Nodo.Attributes.getNamedItem(“Descripcion”).Text & " - "
Next Nodo
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘Impuestos’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado")
For Each Nodo In ListaNodo
If Nodo.Attributes.getNamedItem(“Impuesto”).Text = “002” Then
IVA = IVA + Val(Nodo.Attributes.getNamedItem(“Importe”).NodeValue)
End If
If Nodo.Attributes.getNamedItem(“Impuesto”).Text = “003” Then
IEPS = IEPS + Val(Nodo.Attributes.getNamedItem(“Importe”).NodeValue)
End If
Next Nodo
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘Retenciones’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion")
For Each Nodo In ListaNodo
If Nodo.Attributes.getNamedItem(“Impuesto”).Text = “001” Then
ISRRe = IVARe + Val(Nodo.Attributes.getNamedItem(“Importe”).NodeValue)
End If
If Nodo.Attributes.getNamedItem(“Impuesto”).Text = “002” Then
IVARe = IVARe + Val(Nodo.Attributes.getNamedItem(“Importe”).NodeValue)
End If
Next Nodo
‘’’’’’’’’’’’’’’’’’’’’’’’’’‘OTROS IMPUESTOS’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes(“cfdi:Comprobante/cfdi:Complemento/implocal:ImpuestosLocales/implocal:TrasladosLocales”)
For Each Nodo In ListaNodo
ISH = Nodo.Attributes.getNamedItem(“Importe”).Text
Next Nodo
‘’’’’’’’’’’’’’’’’’’’’’’’’’‘AEROLINEAS’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes(“cfdi:Comprobante/cfdi:Complemento/aerolineas:Aerolineas”)
For Each Nodo In ListaNodo
TUA = Nodo.Attributes.getNamedItem(“TUA”).Text
Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes(“cfdi:Comprobante/cfdi:Complemento/aerolineas:Aerolineas/aerolineas:OtrosCargos/aerolineas:Cargo”)
'MsgBox ListaNodo.Length
For Each Nodo In ListaNodo
YR = Nodo.Attributes.getNamedItem(“Importe”).Text
Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes(“cfdi:Comprobante/cfdi:Complemento/pago20:Pagos/pago20:Pago/pago20:DoctoRelacionado”)
For Each Nodo In ListaNodo
UUIDPAGO = Nodo.Attributes.getNamedItem(“IdDocumento”).Text
Next Nodo

Set ListaNodo = DocumentoXML.SelectNodes(“cfdi:Comprobante/cfdi:Complemento/pago20:Pagos/pago20:Totales”)
For Each Nodo In ListaNodo
TOTALPAGO = Nodo.Attributes.getNamedItem(“MontoTotalPagos”).Text
Next Nodo

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘UUID’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Set ListaNodo = DocumentoXML.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital")
For Each Nodo In ListaNodo
UUID = Nodo.Attributes.getNamedItem(“UUID”).Text
Next Nodo

Cells(i, 1) = Fecha
Cells(i, 2) = Folio
Cells(i, 3) = RFC
Cells(i, 4) = Proveedor
Cells(i, 5) = Concepto
Cells(i, 5).ClearFormats
Cells(i, 6) = Subtotal - TUA - YR - Descuento
Cells(i, 7) = IVA
Cells(i, 8) = ISRRe
Cells(i, 9) = IVARe
Cells(i, 10) = IEPS
Cells(i, 11) = ISH
Cells(i, 12) = TUA
Cells(i, 13) = YR
Cells(i, 14) = Total
Cells(i, 15) = UUID
Cells(i, 16) = FormaPago
Cells(i, 17) = TipoDeComprobante
Cells(i, 18) = Moneda
Cells(i, 20) = UUIDPAGO
Cells(i, 21) = TOTALPAGO
Fecha = “”
Folio = “”
RFC = “”
Proveedor = “”
Concepto = “”
Subtotal = 0
Descuento = 0
IVA = 0
ISRRe = 0
IVARe = 0
IEPS = 0
ISH = 0
TUA = 0
YR = 0
Total = 0
UUID = “”
FormaPago = “”
TipoDeComprobante = “”
Moneda = “”
UUIDPAGO = “”
TOTALPAGO = “”
Next
Cells(1, 1).Value = “Fecha”
Cells(1, 2).Value = “Folio”
Cells(1, 3).Value = “RFC”
Cells(1, 4).Value = “Proveedor”
Cells(1, 5).Value = “Concepto”
Cells(1, 6).Value = “Subtotal”
Cells(1, 7).Value = “IVA”
Cells(1, 8).Value = “ISR RETENIDO”
Cells(1, 9).Value = “IVA RETENIDO”
Cells(1, 10).Value = “IEPS”
Cells(1, 11).Value = “ISH”
Cells(1, 12).Value = “TUA”
Cells(1, 13).Value = “YR”
Cells(1, 14).Value = “Total”
Cells(1, 15).Value = “UUID”
Cells(1, 16).Value = “FormaPago”
Cells(1, 17).Value = “TipoDeComprobante”
Cells(1, 18).Value = “Moneda”
Cells(1, 20).Vaxlue = “UUIDPAGO”
Cells(1, 21).Value = “TOTALPAGO”
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.DisplayStatusBar = True

End With
End Sub

Es una macro bastante larga, y no te va a funcionar, creo, dado que el soporte para VBA todavía es algo limitado. Importar datos de un CFDI es trivial, con Python, si estas dispuesto a usarlo en vez de Basic, puedo ayudarte con la migración de esta macro. Basic en lento y aburrido. :grinning:

pues si es mejor en phyton, pues si me puedes ayudar, pero yo no soy programador, apenas le entiendo a basic