La guía completa de automatización con macros en Office (Excel, Word, APIs y más)
Bienvenid@ a Programación para Todos, un espacio personal donde documento aprendizajes técnicos, ideas y procesos de programación que he querido probar y entender por cuenta propia. Los casos y ejemplos que comparto no tienen referencia a mi trabajo, sino que son ejercicios, pruebas y escenarios recreados a partir de inquietudes técnicas personales. Este blog funciona como un compendio personal de conocimiento: código, ideas y reflexiones que decido compartir.
Si trabajas en contabilidad o administración, probablemente has perdido horas capturando datos de facturas XML (CFDI) manualmente. Copiar el RFC, UUID o los montos no solo consume tiempo, también aumenta el riesgo de errores que pueden afectar reportes y procesos fiscales.
Para resolver este problema, desarrollé una macro en Word que extrae automáticamente los datos clave de tus archivos XML y los coloca en una tabla lista para usar.
Esta herramienta está pensada para profesionales que buscan trabajar más rápido, reducir errores y automatizar tareas repetitivas.
Procesar facturas manualmente puede tomar entre 2 y 5 minutos por archivo. Si trabajas con solo 50 CFDIs al mes, esto puede representar hasta 4 horas de trabajo operativo.
Automatizar este proceso mejora la productividad, reduce errores humanos y permite enfocarte en tareas de mayor valor dentro de tu empresa.
Presiona Alt + F11 en Word para abrir el editor de VBA, luego inserta un nuevo módulo y pega este código:
Sub LeerMultiplesCFDIsYCrearTabla()
Dim xmlDoc As Object
Dim archivos As Variant
Dim i As Integer
Dim rfcEmisor As String, rfcReceptor As String, uuid As String, total As String
Dim tabla As Table
Dim fila As Integer
Dim excelApp As Object
On Error Resume Next
Set excelApp = GetObject(, "Excel.Application")
If excelApp Is Nothing Then Set excelApp = CreateObject("Excel.Application")
On Error GoTo 0
archivos = excelApp.GetOpenFilename("Archivos XML (*.xml), *.xml", , "Selecciona uno o varios archivos XML", , True)
If Not IsArray(archivos) Then Exit Sub
Set tabla = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=1, NumColumns:=4)
With tabla
.Cell(1, 1).Range.Text = "RFC Emisor"
.Cell(1, 2).Range.Text = "RFC Receptor"
.Cell(1, 3).Range.Text = "UUID"
.Cell(1, 4).Range.Text = "Total"
.Rows(1).Range.Bold = True
End With
fila = 2
For i = LBound(archivos) To UBound(archivos)
Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
xmlDoc.async = False
xmlDoc.Load archivos(i)
If xmlDoc.ParseError.ErrorCode = 0 Then
xmlDoc.setProperty "SelectionNamespaces", _
"xmlns:cfdi='http://www.sat.gob.mx/cfd/4' xmlns:tfd='http://www.sat.gob.mx/TimbreFiscalDigital'"
On Error Resume Next
rfcEmisor = xmlDoc.SelectSingleNode("//cfdi:Emisor").Attributes.getNamedItem("Rfc").Text
rfcReceptor = xmlDoc.SelectSingleNode("//cfdi:Receptor").Attributes.getNamedItem("Rfc").Text
total = xmlDoc.SelectSingleNode("//cfdi:Comprobante").Attributes.getNamedItem("Total").Text
uuid = xmlDoc.SelectSingleNode("//tfd:TimbreFiscalDigital").Attributes.getNamedItem("UUID").Text
On Error GoTo 0
tabla.Rows.Add
tabla.Cell(fila, 1).Range.Text = rfcEmisor
tabla.Cell(fila, 2).Range.Text = rfcReceptor
tabla.Cell(fila, 3).Range.Text = uuid
tabla.Cell(fila, 4).Range.Text = total
fila = fila + 1
End If
Next i
MsgBox "Se procesaron " & (fila - 2) & " archivos XML.", vbInformation, "Macro CFDI"
End Sub
Si prefieres ahorrar tiempo y obtener la macro completamente funcional sin configuraciones adicionales, puedes adquirirla aquí:
👉 Comprar macro para leer XML CFDI
También desarrollo macros personalizadas para empresas o procesos específicos.
📩 Contáctame: zelideth27@gmail.com
Sí, está diseñada para leer la estructura actual del SAT.
No. Solo debes copiar el código y ejecutarlo.
Sí, la macro es adaptable según tus necesidades.
Sí, puedes seleccionar varios XML al mismo tiempo.
Automatizar la extracción de datos desde facturas XML no solo ahorra tiempo — también mejora la precisión y la productividad.
Esta macro es una solución práctica para cualquier profesional que trabaje con CFDI y quiera optimizar su flujo de trabajo.
Comentarios
Publicar un comentario
Dejanos tus dudas y comentarios