¿100 CFDI en 40 segundos? Valida XML del SAT con Excel

Imagen
馃く ¿100 CFDI en 40 segundos? Automatiza la validaci贸n de XML con Excel ¿Cu谩nto tiempo dedicas a revisar archivos XML de facturas electr贸nicas? Si trabajas con contabilidad, cuentas por pagar, cuentas por cobrar o administraci贸n, sabes que validar muchos comprobantes fiscales puede convertirse en una tarea repetitiva. 馃殌 ¿Y si pudieras procesar 100 archivos XML en aproximadamente 40 segundos? En esta demostraci贸n utilizo una macro de Excel dise帽ada para automatizar la validaci贸n masiva de CFDI y consultar su estado ante el Servicio de Administraci贸n Tributaria (SAT). 馃搳 ¿Qu茅 hace esta macro de Excel? La herramienta permite seleccionar una carpeta con archivos XML y procesar m煤ltiples comprobantes sin tener que revisarlos individualmente. Procesa varios archivos XML de CFDI. Extrae informaci贸n de los comprobantes fiscales. Consulta el estado de los CFDI ante el servicio del SAT....

馃搳 Macros en Google Sheets: Automatizaci贸n y Ejemplos Pr谩cticos

Google tiene  una versi贸n gratuita para Hojas de c谩lculo mejor conocidas por el software m谩s utilizado del mundo Excel de Microsoft, en d铆as anteriores ten铆a que crear una plantilla en Google Sheets pero ten铆a que hacer lo mismo que hac铆a mi plantilla en Excel, solo que mi plantilla tiene macros y de ah铆 el tema de hoy: explicarles como es que pueden incorporar macros en Google Sheets.

Ejemplo de macro en Google Sheets para automatizar tareas en hojas de c谩lculo.


  1. Primer paso entender la l贸gica de mi programa, cuales eran los pasos en visual basic.
  2. Pens茅 que lo mas f谩cil era hacer una traducci贸n del c贸digo de mi macro al c贸digo de Google Sheet, as铆 que abr铆 mi macro de Excel y comenc茅 buscar como se llamaban las instrucciones y buscar en Google la instrucci贸n de equivalencia.
  3. Comenzar a probar cada l铆nea que agregaba, para ver que hicieran la funcionalidad que yo quer铆a.
  4. Mejorar la macro de Visual Basic.

El resultado final es 


Como nota adicional si quieres grabar sus v铆deos como el que muestre, solo tienen que utilizar Power Point
https://support.microsoft.com/es-es/office/recortar-un-v%C3%ADdeo-1fc386f2-8404-43e8-9dbd-fee3a11a1d8f#:~:text=Para%20guardar%20una%20copia%20independiente,un%20nivel%20de%20compresi%C3%B3n%20adecuado.

El c贸digo que utilice

/** @OnlyCurrentDoc */


function Calcular_consolidado_periodo() {

 var vcperiodo =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Plantilla").getRange("M2").getValue();

  SpreadsheetApp.getUi().alert(vcperiodo);

 var vifilain = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getLastRow() ;

 var vifila = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getLastRow() ;

 var indcat = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Categorias").getLastRow() ;

 var vctotal = 0;

 var vifila2 = 3;

 var indicecat = 1; 

 var categoria = "";

 vifila = vifila + 1;

  

  do{

     categoria = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Categorias").getRange(indicecat, 1).getValue()

     SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getRange(vifila, 2).setValue(categoria);

     indicecat = indicecat + 1;

      vifila = vifila + 1;

  }while(indicecat < indcat);

  

  vifila = vifilain;

  vifila = vifila + 1;

  

  do {


     vifila2 = 3

     vctotal = 0

     

     do{

       if (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Plantilla").getRange(vifila2, 5).getValue() == vcperiodo &&

           SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Plantilla").getRange(vifila2, 2).getValue() ==  

           SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getRange(vifila, 2).getValue())

       {

          var valor = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Plantilla").getRange(vifila2, 4).getValue();

          vctotal = vctotal + valor;

       }         

       vifila2 = vifila2 + 1

     }while (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Plantilla").getRange(vifila2, 5).getValue() != "");

    

       SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getRange(vifila, 1).setValue(vcperiodo);

       SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getRange(vifila, 3).setValue(vctotal);

       

       vifila = vifila + 1 ;

} while (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resumen").getRange(vifila, 2).getValue() != "" );

  

};

El c贸digo de la Macro en Excel vs Google Sheets

Ejemplo de macro en Google Sheets para automatizar tareas en hojas de c谩lculo.

El tema me parece muy interesante, porque tambi茅n como ve铆amos en otro post previo TypeScript el nuevo lenguaje utilizado para programar macros online Typescript el sustituto de VB tambi茅n esta basado en Javascript, cada vez veo m谩s aplicaciones a este lenguaje.

Espero esta pagina les sea de utilidad, nos sigan, nos compartan en este blog o en la p谩gina de Facebook https://www.facebook.com/Programacionparatodosmsg/

Comentarios

馃殌 Mantener este blog funcionando requiere tiempo y caf茅. ¡Puedes contribuir con uno aqu铆!

Entradas m谩s populares de este blog

Gu铆a Pr谩ctica: Ejemplo Completo de ASPX para Desarrolladores Web

馃憠 C贸mo obtener el tipo de cambio en Excel con API de Banxico (paso a paso)

C贸mo crear un Predictor de Partidos de F煤tbol con JavaScript y API-Football