Listar archivos xml y conservar estatus histórico en excel

En ocasiones pasadas tuve que hacer dos macros, una para listar los datos dentro de varios xml dentro de una carpeta y otra para listar todos los xml de una carpeta con sub-carpetas.

Ahora necesito ayuda para hacer un tipo de reporte que tome de una carpeta y sub-carpetas, específicamente este directorio:

Dentro de las carpetas numeradas van los xml y pdf de la semana correspondiente.

La idea es que en la hoja de excel se listen los datos de los xml como UUID, FECHA, RFC Emisor, RFC receptor, TOTAL. Algo así...

El mayor reto (supongo) es: conservar el estatus de cada xml en la columna "J", también que se ponga la información del xml en cada columna si es posible como se muestra en la imagen, (si lo segundo no es posible acepto sugerencias).

Que cuando el archivo se actualice con nuevos XML el encargado de revisar el archivo pueda cambiar el estado de cada xml según el proceso que lleve.

Actualmente no he podido modificar estas macros para que lo haga y estoy desesperándome!

Les agradezco su ayuda desde ya!

Código utilizado hasta ahora:

Option Explicit
Sub ListarArchivos()
'DECLARACION DE VARIABLES
Dim iFile, mPath, iRow(1 To 1, 1 To 6), xmlDoc, Tmp
iFile = Application.GetOpenFilename("Archivos XML (*.xml), *.xml")
If iFile = False Then Exit Sub
Application.ScreenUpdating = False
mPath = Left(iFile, InStrRev(iFile, "\")): iFile = Dir(mPath & "*.xml")
Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0") ' XML v6.0
Do
  iRow(1, 1) = iFile
  xmlDoc.Load mPath & iRow(1, 1)
'-----
'UUID:
  Set Tmp = xmlDoc.getElementsByTagName("tfd:TimbreFiscalDigital").Item(0).Attributes.getNamedItem("UUID")
  iRow(1, 2) = Tmp.Value
'------
'Fecha:
  Set Tmp = xmlDoc.getElementsByTagName("cfdi:Comprobante").Item(0).Attributes.getNamedItem("fecha")
  iRow(1, 3) = CDate(Replace(Tmp.Value, "T", " "))
'----------
'RFC Emisor:
  Set Tmp = xmlDoc.getElementsByTagName("cfdi:Emisor").Item(0).Attributes.getNamedItem("rfc")
  iRow(1, 4) = Tmp.Value
'RFC Receptor:
  Set Tmp = xmlDoc.getElementsByTagName("cfdi:Receptor").Item(0).Attributes.getNamedItem("rfc")
  iRow(1, 5) = Tmp.Value
'-----
'Total:
  Set Tmp = xmlDoc.getElementsByTagName("cfdi:Comprobante").Item(0).Attributes.getNamedItem("total")
  iRow(1, 6) = Val(Tmp.Value)
  Cells(Rows.Count, "a").End(xlUp).Offset(1).Resize(, 6) = iRow
  iFile = Dir
Loop Until iFile = ""
Application.ScreenUpdating = True
End Sub

1 respuesta

Respuesta
1

Fíjate si esto aporta algo

https://youtu.be/PIfyRJrDrXo 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas