Cómo crear una función de EXCEL para obtener datos de un XML o CFDI

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 พ.ย. 2024

ความคิดเห็น • 144

  • @Mar10Bravo
    @Mar10Bravo ปีที่แล้ว

    Es una maravilla saber esto, hace poco me cree el mío ahora con la versión 4 hay nuevos nodos que los sistemas de descarga masiva se tardan en habilitar pero como ya no queria depender de ellos ya me arme mi propio extractor de datos de xml para armar mis reportes a mi gusto.

  • @AELA5511142Q6
    @AELA5511142Q6 8 ปีที่แล้ว +2

    Chingon tu trabajo, lo mejor de todo, es que, compartes tu codigo y en lo personal ello ayuda a los aficionados a la programación a mirar otras perspectivas, y pulir, o aprender aun más

  • @oscarbolanos
    @oscarbolanos 6 ปีที่แล้ว +1

    Excelente tutorial, como comentario a mi también me daba como resultado 0 y al cambiar la palabra dentro del paréntesis "Folio" me di cuenta que al escribirlo con mayuscula me daba el resultado contenido en el XMLS, y ya estoy inscrito en tu canal, Dios te bendiga.

    •  6 ปีที่แล้ว

      Es muy frecuente el error en el uso de mayúsculas.

  • @alonsoelcraa8119
    @alonsoelcraa8119 4 ปีที่แล้ว

    Perfecto, me costó un poco de trabajo ya que me daba error de valor o a veces cero pero me di cuenta de que tal cual debemos de poner la palabra a buscar (en la fórmula) como se encuentra en el xml con las mayúsculas y minúsculas. DIOS TE BENDIGA AMIGO

  • @richardpalacios1064
    @richardpalacios1064 ปีที่แล้ว

    Eres un gran maestro. Muy claros tu vídeos. Muchas gracias por compartir tu conocimiento.

  • @fernandogarcia5485
    @fernandogarcia5485 ปีที่แล้ว

    Muchísimas gracias, me ayudaste muchísimo, no se porque a mi me funciona solo si le pongo una , en lugar de ; en la fórmula final pero funciona muy bien, muchas gracias

  • @luisbautista6189
    @luisbautista6189 3 ปีที่แล้ว

    Gracias por este gran aporte, gracias a tu tutorial logre hacerme una hoja para poder imprimir mis facturas de acuerdo a mi formato, solo jalando el xml. DTB

  • @rcuboku9915
    @rcuboku9915 5 ปีที่แล้ว +4

    Muchas gracias por estos tutoriales y este curso.
    Me queda una inquietud:
    Si los datos que necesitamos extraer no están en los atributos de los nodos sino entre las etiquetas de apertura y cierre, ejemplo: exoluciones..............como tendría que ir el texto de la macro en visual basic ??

  • @lacs83
    @lacs83 7 ปีที่แล้ว

    Buen trabajo! A partir de 2013 ya se cuenta con la función "XMLFILTRO" la cual trabaja de manera similar.
    Otra observación tu función puede llegar, mas sera sumamente lenta con una gran cantidad de archivos a extraer es mejor procesar el XML como texto usando expresiones regulares o funciones de cadena!

    •  6 ปีที่แล้ว

      Estoy de acuerdo contigo, aunque bien podrías realizar otro proceso que transforme las funciones en valores. Aunque para mi resultó más atractivo crear una función con la que el usuario pudiera utilizar, ya que muchos usuarios de Excel buscan el tema de funciones.

    •  6 ปีที่แล้ว

      El inconveniente que encuentro es que tienes que cargar completamente el XML probablemente en una celda si lo quieres hacer así y luego utilizar la función XMLFILTRO y no existe una función de Excel para cargarlo, salvo que crees una y entonces sí podrías usar la función XMLFILTRO. Pero con la librería que utilizo puedes extenderte aún más para obtener todo tipo de información del XML como puede ser el número de atributos, el número de nodos y eso no te lo devuelve la función XMLFILTRO.

    •  6 ปีที่แล้ว

      Además con otra función que cree OBTENER_ATRIBUTOS puedes pasarle directamente los parámetros y con la función XMLFILTRO tendrías que hacer un concatenado que se adapte a la función. La función OBTENER_ATRIBUTOS se adapta al usuario, así que está mejor.

  • @karlagg3291
    @karlagg3291 4 ปีที่แล้ว

    Están muy buenos los tutoriales, una pregunta se podría hacer eso en una tabla dinámica de manera que se puedan escojer los valores que necesitan los contadores. Gracias

  • @orlandocalvillo6846
    @orlandocalvillo6846 5 ปีที่แล้ว

    ya lo tienes actualizado para Excel 2016?

  • @aaronespejel6612
    @aaronespejel6612 2 ปีที่แล้ว +2

    Si les marca error en la fórmula es porque están utilizando versión de Office superior a la que se utiliza en el vídeo.
    Basta con sustituir el ; (punto y coma) por , (coma) y queda resuelto.
    ¡Saludos!

    • @facturacionganaderos3839
      @facturacionganaderos3839 ปีที่แล้ว

      HOLA Te pregunto a ti porque veo que el del tutorial no responde a nadie. En las herramientas de "visual basic" en referencias en mi computadora viene microsoft office 16.0 y no 14.0, mi pregunta es cual tengo debo seleccionar "microsoft xml v3.0, v4.0 o v6.0? te agradezco de antemano

    • @aaronespejel6612
      @aaronespejel6612 ปีที่แล้ว +1

      @@facturacionganaderos3839 Sugiero que igualmente escojas V3.0, en caso de que la macro no corra por incompatibilidad podrías saltar a la V4.0.
      Aunque en realidad no debería haber ningún problema si seleccionaras las 3 opciones.
      Saludos.

    • @facturacionganaderos3839
      @facturacionganaderos3839 ปีที่แล้ว

      @@aaronespejel6612 Gracias muy amable en responder, lo intentare.

  • @ejvz78
    @ejvz78 6 ปีที่แล้ว +2

    Tendrás alguna opción para la versión 3.3? Saludos

  • @industrialtress5525
    @industrialtress5525 7 ปีที่แล้ว

    Una felicitación y un agradecimiento por compartir tus conocimientos y trabajo, son de gran utilidad. Ahora, tengo una pregunta, ¿Como puedo hacer para que Total e IVA puedan ser tratados como números y asi poderlos sumar? Saludos.

    •  7 ปีที่แล้ว +1

      Tienes dos opciones desde el código usar la función VAL o desde la hoja de cálculo utilizar la función VALOR.

    • @industrialtress5525
      @industrialtress5525 7 ปีที่แล้ว

      Lo probé y funciono a la perfección, ahora puedo hacer cálculos, gracias, saludos.

    • @sergionolasco7432
      @sergionolasco7432 6 ปีที่แล้ว

      disculpa la ignorancia, pero como lo pongo, mi función es la siguiente
      Function Total(ruta, dato)
      carga (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante")
      For Each nodo In listanodos
      Total = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function

  • @ramonpalomino7423
    @ramonpalomino7423 8 ปีที่แล้ว

    Muchas gracias por este aporte, una pregunta funciona igual para excel 2013 porque al ponerle la formula para obtener el folio me dice error en la formula, gracias de nuevo.

  • @josemanuelcabezasberrios380
    @josemanuelcabezasberrios380 2 ปีที่แล้ว

    Quiero hacer lo mismo pero mi xml engloba los datos así 49928... yo quiero sacar ese número 49928 en una celda. Así como esa etiqueta hay otra llamada dd/mm/yyyy. Con ese código puedo obtener el resultado? O se debe cambiar algo?

  • @manueldejesusbolanosheredi4145
    @manueldejesusbolanosheredi4145 8 ปีที่แล้ว

    Muchas gracias por el tutorial. Me va a servir mucho. Se puede con cfdi nominas me imagino

  • @ernestomumenthey1393
    @ernestomumenthey1393 4 ปีที่แล้ว +3

    Buenas Tardes, gracias por el apoyo, sigo los pasos del video pero el resultado siempre es 0

  • @manuelsegovia6214
    @manuelsegovia6214 3 ปีที่แล้ว

    disculpe la molestia pero cuando tecleo la funcion comrpobante para que me de el folio excel me marca uncuadro de dialogo de error y me selecciona dentro de la formula la celda donce esta la ruta , me podria ayudar a solucionar esto tengo windows 7 home basico de 32 bits y excel 2010 gracias

  • @marcocruzgijon7415
    @marcocruzgijon7415 7 ปีที่แล้ว

    Excelente video, me sirbió de mucho. En el caso de conceptos, si me salió bien, extrae unidad, importe y precio unitario, pero en el caso de facturas con dos conceptos como le hago? ya que solo me arroja un concepto, y los demas no, de antemano muchas gracias.

  • @ErikaGonzalez-we7yz
    @ErikaGonzalez-we7yz 3 ปีที่แล้ว

    Hola. Ya seguí los pasos, e incluso regresé a poner mayúsculas y minúsculas tal cual el nombre que refleja el XML (como algún comentario que alguien antes posteó), y aún así, me marcar un error #¡VALOR!. Tengo excel 2013 y asumo eso debe hacer diferencia. He hecho el cambio en las indicaciones de =comprobante(A3;"Folio") por =comprobante(A3,"Folio") pues de la primer manera no lo acepta. ¿hay algo más que debiera considerar para que las indicaciones funcionen?

  • @gladysshiosaki8806
    @gladysshiosaki8806 6 ปีที่แล้ว

    Estas funciones solo aplican para xml 3.2. Que puedo usar para xml versiones 3.3?

  • @albertolopez97
    @albertolopez97 8 ปีที่แล้ว

    disculpa aprovechando , podrías subir los tutos en donde muestres como crear las otras funciones para los demás nodos y el de obtener las rutas de los xmls por favor . gracias y sigue así bro

  • @elecktralumsacv8918
    @elecktralumsacv8918 2 ปีที่แล้ว

    Aplica para la versión 2019 de office?

  • @alejandrogonzalezg.3620
    @alejandrogonzalezg.3620 8 ปีที่แล้ว

    Hola que tal muy bien explicado el video. Ya intenté hacer la función solo que cuando quiero hacer la prueba me manda el siguiente mensaje: "Hemos encontrado un problema en la fórmula. Puede intentar repararlo haciendo clic en Insertar función de la pestaña fórmulas..." no se a que se deba este error me podría apoyar porfavor. Gracias.

  • @sleidertd
    @sleidertd 4 ปีที่แล้ว

    HOLA, por favor me puedes decir como saco el resultado dentro de 26 , gracias.

  • @emiliogarrett1111
    @emiliogarrett1111 8 ปีที่แล้ว

    Explicas súper bien!

  • @lcpfsergiopufleahernandez1503
    @lcpfsergiopufleahernandez1503 5 ปีที่แล้ว

    Dios te bendiga amigo!!! Muchas Gracias

  • @gabrielLlanesMX
    @gabrielLlanesMX 8 ปีที่แล้ว

    De lujo le tuto, sera possible calcular la Cadena Original del complemento de certificación digital del SAT y el QR?

    •  8 ปีที่แล้ว

      Si se encuentra en el XML, sí.

    • @gabrielLlanesMX
      @gabrielLlanesMX 8 ปีที่แล้ว

      Se calculan promedio del XML pero en si no vienen como tal.

    •  8 ปีที่แล้ว +1

      Es que es solo lo que venga en el CFDI, por ejemplo el certificado, el sello, noCertificado los puedes obtener con la función COMPROBANTE y si creas una función que se llamase TIMBREFISCAL podrías obtener con ella el selloSAT, noCertificadoSAT y el selloCFD. Si tienes las versiones de OFFICE 2013 O 2016 puedes insertar una aplicación de la Tienda de Office que se llama QR4Office para obtener el QR. Espero que esto te sirva de ayuda.

    • @gabrielLlanesMX
      @gabrielLlanesMX 8 ปีที่แล้ว

      Gracias

    • @jjrosas30
      @jjrosas30 4 ปีที่แล้ว

      @ buenas tardes me podras mandar la liga para descargar el archivo

  • @GuillermoBermejo
    @GuillermoBermejo 8 ปีที่แล้ว +1

    Muchas gracias por el tutorial! Ya me suscribí a tu canal y estoy en espera del siguiente! Saludos!

    •  8 ปีที่แล้ว

      Ya lo subí.

  • @MIGUELHERNANDEZ-ll9sy
    @MIGUELHERNANDEZ-ll9sy 6 ปีที่แล้ว

    Hola. mis xml son 3.2, 1.1, 1.2 y no sé si por eso me da "0" en cada consulta de cada nodo. No me da lo que señala el CFDI. Gracias por tu video. Espero tu respuesta.

    •  6 ปีที่แล้ว

      Debe ser porque debes escribir el nombre del atributo tal y como aparece en el XML, respetando mayúsculas y minúsculas, eso puede ser una opción, la otra es el nombre de la función. Por ejemplo; si tú escribes function OBTENER_IVA() y en el cuerpo de la función escribes OBTNER_IVA = .... Revisa cómo lo escribiste.

    • @MIGUELHERNANDEZ-ll9sy
      @MIGUELHERNANDEZ-ll9sy 6 ปีที่แล้ว

      Gracias por tu apoyo. Ya logré que funcionara. Felicitaciones

  • @albertolopez97
    @albertolopez97 8 ปีที่แล้ว +1

    hola bro , realice todos tus pasos pero al realizar la prueba como tu la haces , me da "0",a que crees que se deba ? soy de México y lo hice en office 365

    •  8 ปีที่แล้ว +3

      En la descripción del vídeo de cómo crear tu programa visor de documentos xml o cfdi esté el código fuente.

    •  8 ปีที่แล้ว +3

      Private documentoxml As MSXML2.DOMDocument
      Private listanodos As MSXML2.IXMLDOMNodeList
      Private nodo As MSXML2.IXMLDOMNode
      Function CARGA(ruta)
      Set documentoxml = New DOMDocument
      documentoxml.Load (ruta)
      End Function
      Function COMPROBANTE(ruta, dato)
      CARGA (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante")
      For Each nodo In listanodos
      COMPROBANTE = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function
      Function EMISOR(ruta, dato)
      CARGA (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Emisor")
      For Each nodo In listanodos
      EMISOR = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function
      Function RECEPTOR(ruta, dato)
      CARGA (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Receptor")
      For Each nodo In listanodos
      RECEPTOR = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function
      Function UUID(ruta, dato)
      CARGA (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital")
      For Each nodo In listanodos
      UUID = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function
      Function IVA(ruta, dato)
      CARGA (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Impuestos/cfdi:Traslados/cfdi:Traslado")
      For Each nodo In listanodos
      IVA = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function
      Sub DESCARGAR()
      Dim dg As FileDialog
      Range("A3").Select
      Set dg = Application.FileDialog(msoFileDialogFilePicker)
      Dim archivo As Variant
      With dg
      If .Show = -1 Then
      For Each archivo In .SelectedItems
      ActiveCell.Value = archivo
      ActiveCell.Cells(2, 1).Select
      Next archivo
      End If
      End With
      Set dg = Nothing
      End Sub

  • @carlosperez2215
    @carlosperez2215 5 ปีที่แล้ว

    Excelente vídeo, sera que puedes realizar otro vídeo pero para un XML de acá de Ecuador porque parece que la estructura del XML es diferente

    •  5 ปีที่แล้ว

      Mi correo es amaranto1114@gmail.com, podrías compartirme tu XML y te ayudo.

  • @diano217
    @diano217 4 ปีที่แล้ว

    no se puede pegar y copiar?

  • @cesarcorreajaik8632
    @cesarcorreajaik8632 4 ปีที่แล้ว

    Excelente video! gracias

  • @chrisconstantine1389
    @chrisconstantine1389 2 ปีที่แล้ว

    10/10

  • @jordanguallichico8200
    @jordanguallichico8200 7 ปีที่แล้ว

    hola muy excelente tu video pero tengo un problema al parecer igual que algunas personas de aqui y es que me sale de resultado cero, me podrias ayudar a decifrar el porque de este error muchas gracias

  • @danielgaritas6206
    @danielgaritas6206 5 ปีที่แล้ว

    compañero tengo un problema a que correo te puedo enviar mi archivo y que lo vea a ver que error hay en la formula para empezar no puedo usar ; con solo , si me acepta los datos y la otra cosita es que mi xml es 4.3 de costa rica no se si te lo envio y vemos en que me puedes dar una luz al problema.

  • @Elganador95185
    @Elganador95185 6 ปีที่แล้ว +1

    HOla amigo, tengo un problema en mis archivos xml no tengo cfdi, ayuda por favor

  • @amigohernandez6791
    @amigohernandez6791 6 ปีที่แล้ว

    hola buen tarde. entonces este código no aplica para la version 3.3 de los xml ? o por que me manda error de valor? o que tengo que modificar disculpa.

    • @ricardoarteagahernandez9596
      @ricardoarteagahernandez9596 6 ปีที่แล้ว

      Debes revisar como esta esta escrito tu atributo en el archivo, en mi xml el atributo iniciaba con una mayúscula "Folio" en vez de "folio"
      también revisa tu formula, al escribir en excel a mi me funciono así:
      =comprobante(C1,"Folio")
      usando coma entre la celda de la dirección del archivo y el atributo.
      Saludos.

  • @eumirgarciat
    @eumirgarciat 4 ปีที่แล้ว +1

    muy buen video pero hoy Dic 2019 quisiera saber como saco de 1000 archivos de xml una lista donde tenga el campo de FOLIO FISCAL Y TOTAL, tengo que hacerlo 1 por 1 para pasarlos a excel pero 1000 me tardo mucho te agradecería con algún ejemplo de varios archivos (5 o 10) muchas gracias

    • @ElContaTrejo
      @ElContaTrejo 4 ปีที่แล้ว

      Yo tengo un archivo de excel. Por si te interesa te lo mando mediante email.

    • @eduardobernal3000
      @eduardobernal3000 4 ปีที่แล้ว

      @@ElContaTrejo podrías pasarmelo? te paso mi correo: bernal.eduardo80@uabc.edu.mx

  • @enunclickmx
    @enunclickmx 7 ปีที่แล้ว

    estimado para sacar el concepto cuando tienes mas de uno como se le hace?? gracias

  • @ensayosyarmonias1921
    @ensayosyarmonias1921 7 ปีที่แล้ว +1

    Excelente tu aporte muy bueno, cuando pongo la formula de comprobante me marca cero como resultado no sabrás a que se debe. Gracias.

    •  7 ปีที่แล้ว +1

      A mi normalmente me pasa si escribo por ejemplo cfdi:comprobante en lugar de cfdi:Comprobante. Ya con eso te manda cero, porque no lo encuentra tienes que escribirlo tal como aparece en el XML.

    • @ensayosyarmonias1921
      @ensayosyarmonias1921 7 ปีที่แล้ว

      Ok déjame verlo jejejeje gracias, ¿no tendrás toda la función ya escrita, podrás pasármela? se te agradecera mucho.

    •  7 ปีที่แล้ว

      Creo que ya lo resolví, si Tu nombre de función en el encabezado de tu
      código no coincide con el que aparece en el cuerpo del código, te puede
      mandar el error, supongamos esto:
      Tienes la función de la siguiente manera:
      Function COMPROBANTE(ruta as String, nombrenodo as String, estenodo as Integer, atributo as String) as String
      COMPROBNTE="El código que devuelve el valor de la función"
      End Function
      Como
      podrás notar no correponden, por lo tanto si tu escribes el nombre del
      título de la función en la celda de la hoja de cálculo te aparecerá Cero
      porque COMPROBANTE NO ES IGUAL A NINGÚN VALOR. Es decir que te aparece
      cero porque en la función no se ha definido el valor que devuelve la
      función.
      Esto quiere decir dos cosas que está mal escrito el
      nombre de la función dentro del cuerpo del código ó no se definió dentro
      del cuerpo de la función el valor que devuelve. Por eso yo recomiendo
      copiar el nombre de la función, literalmente Copiar y pegarlo en el
      cuerpo de la función.

    • @ensayosyarmonias1921
      @ensayosyarmonias1921 7 ปีที่แล้ว

      ya lo vi si funciona jejeje gracias, pero para otros como ¿descripción del cfdi? no sale me muestra valor y ya

  • @davidgavilanes5530
    @davidgavilanes5530 2 ปีที่แล้ว

    No sé si alguien sepa por qué, pero cuando quiero escribir la última fórmula no puedo colocar el punto y coma después de escribir la celda de la ruta. Si también les pasó me avisan para sufrir juntos.

  • @josedanielsolisvillalobos6677
    @josedanielsolisvillalobos6677 4 ปีที่แล้ว

    Buenos días, cómo me podría comunicar contigo para que me ayudes, lo que pasa es que soy de Costa Rica y el formato de los XML es un poco distinto

  • @JesusRamirez-li5qk
    @JesusRamirez-li5qk 7 ปีที่แล้ว

    Hola, muy buena aportación, a mí me devuelve el valor "0" ya rectifiqué las mayúsculas y minúsculas y aún así me sigue devolviendo un cero

    •  7 ปีที่แล้ว

      Si quieren pásenme sus archivos por correo y les ayudo.

    •  7 ปีที่แล้ว

      Creo que ya lo resolví, si Tu nombre de función en el encabezado de tu código no coincide con el que aparece en el cuerpo del código, te puede mandar el error, supongamos esto:
      Tienes la función de la siguiente manera:
      Function COMPROBANTE(ruta as String, nombrenodo as String, estenodo as Integer, atributo as String) as String
      COMPROBNTE="El código que devuelve el valor de la función"
      End Function
      Como podrás notar no correponden, por lo tanto si tu escribes el nombre del título de la función en la celda de la hoja de cálculo te aparecerá Cero porque COMPROBANTE NO ES IGUAL A NINGÚN VALOR. Es decir que te aparece cero porque en la función no se ha definido el valor que devuelve la función.
      Esto quiere decir dos cosas que está mal escrito el nombre de la función dentro del cuerpo del código ó no se definió dentro del cuerpo de la función el valor que devuelve. Por eso yo recomiendo copiar el nombre de la función, literalmente Copiar y pegarlo en el cuerpo de la función.

  • @analauravidmar3861
    @analauravidmar3861 4 ปีที่แล้ว

    Hola buenas tardes, soy de Argentina. tengo el siguiente XML. Como hago para que la función me devuelva "2019"? En este caso no es un atributo. Puede ser? Muchas gracias
    -
    2019
    11
    2020-01-16
    +
    +
    +

  • @lcpgaeta
    @lcpgaeta 6 ปีที่แล้ว

    Buen día, tratando de hacer el ejercicio me arroja error #¡VALOR!
    y no se a que se deba, estuve leyendo los comentarios y observe que en tu video como crear tu programa visor vi que esta el codigo fuente y lo copie y pegue y me sigue dando el mismo error, si no es error en el codigo fuente que otra cosa puede ser? tengo excel 365, de antemano gracias por su ayuda.

    • @lcpgaeta
      @lcpgaeta 6 ปีที่แล้ว

      ya vi que con xml 3.2 si funciona pero con xml 3.3 no

    •  5 ปีที่แล้ว

      Son las letras mayúsculas.

  • @nilfus
    @nilfus 7 ปีที่แล้ว

    Hola buenas tardes, tengo problemas con el archivo ya que estoy trabajando en MAC office 365 me da un error que me dice que "Error de Compilación:" No se ha definido el tipo definido por el usuario yo creo que el problema es que en la Mac no se sale la opción de habilitar las bibliotecas como que la herramienta de Visual Basic no está completa (este comentario por si tienes alguna solución para Mac) por otra parte recree el archivo tal como lo describes en el tutoría pero me da un error en Office 2007 la formula me devuelve el error Valor te agradezco mucho que me ayudes con el tema si necesitas que mande el archivo o me indiques que hacer. de antemano gracias.

  • @diegojimenez1136
    @diegojimenez1136 2 ปีที่แล้ว

    Me podrias ayudar con una macro para cargar todo un xml mediante un boton

    • @pedro525252
      @pedro525252 ปีที่แล้ว

      Aca te lo hacen gratis. th-cam.com/video/YpDOqeSKn1o/w-d-xo.html

  • @cristhiantuerosr.7761
    @cristhiantuerosr.7761 2 ปีที่แล้ว

    Excelente

  • @mariaalejandramazuera9229
    @mariaalejandramazuera9229 7 ปีที่แล้ว

    Estoy haciendo el programa en Excel 2010 pero cuando trato de capturar el folio del archivo para probar el código me aparce un error. El código está igual al del vídeo. Qué puede ser? Gracias

  • @Albertogeron2002
    @Albertogeron2002 3 ปีที่แล้ว

    Es bueno el aporte... Pero al trabajar en bases de datos de empresas muy grandes es demasiado impractico... Lo. Mejor es la. Programación

  • @fernandobarbosam.6547
    @fernandobarbosam.6547 8 ปีที่แล้ว

    En office 2013 no funciona o no acepta el punto y como en la fórmula ¿cómo se resuelve esto, o sólo funciona con Office 2010?

    •  7 ปีที่แล้ว

      Si no lo acepta usa lo que sí acepte, amigo, vas a ver que sí funciona.

    • @miguepadi
      @miguepadi 7 ปีที่แล้ว +1

      utiliza la "coma" yo tambien pense que era el office 2013 y instale el 2010 pero no resulto con el punto y coma, hasta que se me ocurrio solo la "coma".

    • @enxcrip
      @enxcrip 6 ปีที่แล้ว

      me sirvio tu aportacion!!! gracias!!!

  • @josemisaeljimenezsegundo8329
    @josemisaeljimenezsegundo8329 8 ปีที่แล้ว

    Hola, buenas tardes, muchisimas gracias por el tutorial, me ha servido muchisimo en el trabajo, solo tengo un pequeño problema; hay valores que necesito sacar del archivo xml pero estos se encuentran en un subtitulo y no estan asociados a una palabra, osea de esta manera:
    54
    Necesito sacar el valor de 54 pero me aparece un error y no se a que palabra asociar el valor. La funcion la realice de esta manera siguiendo tu tutorial:
    Function CARGAPERIODO(ruta, dato)
    CARGA (ruta)
    Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Addenda/cfe:CFE/clsRegArchFact/TotalMed4")
    For Each nodo In listanodos
    CARGAPERIODO = nodo.Attributes.getNamedItem(dato).Text
    Next
    End Function
    espero tu amable y pronta respuesta y de nuevo te agradezco la ayuda

  • @encargado2kmc73
    @encargado2kmc73 6 ปีที่แล้ว

    Hola Amigo, m nombre es Alberto, ante que nada felicitarte por tus vídeos, los mejores que he visto muy bien explicados. En base a tus vídeos hice un archivo para extraer la información de los xml complementos de pago, todo bien el archivo que muy bien, la cuestión es que al extraer la información del nodo "pago10:Pagos/pago10:Pago/pago10:DoctoRelacionado" cuando hay mas de un documento relacionado, osea que yo en mi complemento de pago ampara por ejemplo 5 facturas de ingresos dentro del xml irán relacionados los 5 UUID, sin embargo este archivo que cree solo me jala el ultimo, mi pregunta es ¿como puedo hacer que me jale los datos de cada documento relacionado?, y que cada documento lo inserte en una fila distinta recorriendo las demás facturas hacia abajo para no amontonar información. Si gustas te puedo enviar mi archivo y lo puedo compartir, acabo todo el código es lo que tu explicaste yo solo lo arme a mis necesidades, espero me puedas ayuda y muchas gracias. mi correo arv86.romano@hotmail.com

    • @encargado2kmc73
      @encargado2kmc73 6 ปีที่แล้ว

      Function Dpago(ruta, dato)
      carga (ruta)
      Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante/cfdi:Complemento/pago10:Pagos/pago10:Pago/pago10:DoctoRelacionado")
      For Each nodo In listanodos
      Dpago = nodo.Attributes.getNamedItem(dato).Text
      Next
      End Function

    • @encargado2kmc73
      @encargado2kmc73 6 ปีที่แล้ว

      Este es un ejemplo, en este xml de pago son tres las facturas relacionadas, pero solo me jala la tercera, yo quiero me jales los datos de las 3 y distintas filas, el nodo hijo de las 3 documentos relacionados se llama igual en todos los casos: " "
      -
      -
      -

    •  5 ปีที่แล้ว

      Si me pudieras compartir tu XML a mi correo amaranto1114@gmail.com.

  • @isaakgarcia7463
    @isaakgarcia7463 4 ปีที่แล้ว

    ya he pasado varias veces esta función para obtener datos xml, pero al momento de aplicar la función hay una falla y en la parte donde se indica la celda de la ruta se marca como en negro y me dice que hay un error lo he repetido varias veces el video y la captura pero no logro el resultado

    •  4 ปีที่แล้ว

      El código está en la descripción

  • @lenincevallos2532
    @lenincevallos2532 5 ปีที่แล้ว

    Hola, excelente explicación, sin embargo como recupero información dentro de , ayudame xfa

    •  5 ปีที่แล้ว

      ¿me podrías compartir tu XML?

  • @karlagg3291
    @karlagg3291 4 ปีที่แล้ว

    Me da un error dice que hay un problema con la formula que cuando el primer carácter es un signo igual = o un signo menos (-) Excel piensa que es una fórmula
    Sí escribe: 1+1 la celda muestra: 2....
    Como se puede corregir este error?

  • @aureliagarcia1770
    @aureliagarcia1770 7 ปีที่แล้ว

    hey, gracias me sirvio mucho :D

    •  7 ปีที่แล้ว

      Puedes checar los demás vídeos dentro de la lista de reproducción. De cualquier manera, gracias.

  • @carloshc7327
    @carloshc7327 8 ปีที่แล้ว

    Muchisimas gracias!!!!

    •  8 ปีที่แล้ว

      De nada, falta pulirlo todavía, pero ya es un comienzo.

  • @wmkphalfil
    @wmkphalfil 7 ปีที่แล้ว

    Buen dia, no me carga me marca un error en el renglon 1, me podrias ayudar de favor?

  • @robinsonmoraosorio
    @robinsonmoraosorio 7 ปีที่แล้ว

    Saludos, muchas gracias por su ayuda. le escribo desde chile. deseo realizar la misma operación, pero encuentro que los archivos generados por la facturación electrónica, estan en encoding="ISO-8859-1, el cual cambia y no es operacional su tutorial. Me puedes ayudar con esto. Mil Gracias

    • @joserivero3848
      @joserivero3848 4 ปีที่แล้ว

      robinson habrás encontrado la solución? yo tengo como nombre "EnvioDTE" y aun asi me aparece cero

  • @dashiet1
    @dashiet1 8 ปีที่แล้ว +1

    Me da resultado en 0 que puedo hacer? :(
    Tengo que decir que los XML que traro de leer son distintos a los tuyos (por el hecho de que somos de paises distintos), si me puedes ayudar, te lo agradeceria.

    •  7 ปีที่แล้ว

      Sucede que el lenguaje xml es sensible a mayúsculas y minúsculas, por lo tanto, si en el CFDI está en mayúsculas y lo escribes en minúsculas, te lo tomará como un valor diferente e inexistente.

    • @Elganador95185
      @Elganador95185 6 ปีที่แล้ว

      Hola mi xml es diferente tal vez me puedes ayudar aqui te dejo una parte
      AUTORIZADO
      0801201607004909900057370013064239631
      2016-01-08T07:00:49-05:00
      PRODUCCIÓN
      21BANCO DEL PACIFICO S.A.BANCO DEL PACIFICO S.A.0990005737001

    • @josssjoss7660
      @josssjoss7660 5 ปีที่แล้ว

      @@Elganador95185 a mi también me pasa lo mismo lo solucionasts

  • @carlosquezada1782
    @carlosquezada1782 7 ปีที่แล้ว

    amigo una duda como hago para que me coloque el iva ret en un campo y el isr ret en otro campo
    este es el codigo que utilizo
    Function RETENCION(ruta As String, nombrenodo As String, nombreatributo As String) As String
    Set documentoxml = New DOMDocument
    documentoxml.Load (ActiveCell.Value)
    Set listanodos = documentoxml.getElementsByTagName("cfdi:Retencion")
    For Each nodo In listanodos
    MsgBox nodo.Attributes.Length
    For x = 0 To nodo.Attributes.Length - 1
    With ActiveCell
    .Offset(0, fila + 1).Range("A1").Value = nodo.Attributes.Item(atributo).Text
    End With
    Next x
    Next nodo
    End Function

    •  7 ปีที่แล้ว +1

      UTILIZA desde las CELDAS la siguiente función
      Function OBTENER_ATRIBUTOS(ruta As String, nombrenodo As String, estenodo As Integer, nombreatributo As String) As String
      Set documentoxml = New DOMDocument
      documentoxml.Load (ruta)
      Set listanodos = documentoxml.getElementsByTagName(nombrenodo)
      OBTENER_ATRIBUTOS = listanodos.Item(estenodo).Attributes.getNamedItem(nombreatributo).Text
      End Function
      Ejemplo de fragmento de CFDI
      Si quieres el IVA Retenido estenodo = 0, si quieres el ISR Retenido estenodo = 1 (los nodos se enumeran o indizan empezando desde cero hasta el número total de nodos menos uno.)
      O sea que el nodo cfdi:Retencion tiene dos nodos y se indizan 0 , 1, Por lo tanto el nodo cfdi:Retencion índice 0 tiene los atributos importe="455.11" e impuesto="IVA"
      y el nodo cfdi:Retencion índice 1 tiene los atributos importe="426.67" e impuesto="ISR"
      ---------------------------------------------------------------------------------------------------------------------------------
      Los argumentos completos de la función serían:
      Para el IVA Retenido
      ruta ="C:\Users\carlos quezada\Documents\XMLconRetenciones.xml" (o A1 que tenga la ruta)
      nombrenodo ="cfdi:Retencion" o (B1 que contenga el nombre del nodo)
      estenodo =0 (o C1 que contenga el número de nodo iniciando desde 0)
      nombreatributo="importe" (o D1 que contenga el nombre del atributo)
      Para el ISR Retenido
      ruta ="C:\Users\carlos quezada\Documents\XMLconRetenciones.xml" (o A1 que tenga la ruta)
      nombrenodo ="cfdi:Retencion" o (B1 que contenga el nombre del nodo)
      estenodo =1 (o C1 que contenga el número de nodo iniciando desde 0)
      nombreatributo="importe" (o D1 que contenga el nombre del atributo)
      =OBTENER_ATRIBUTOS(A1,B1,0,"importe")
      valor=455.11
      Si quieres trabajar como valor puedes usar la función =VALOR(OBTENER_ATRIBUTOS(A1,B1,0,"importe"))
      Y así ya podrías SUMAR, RESTAR, MULTIPLICAR O DIVIDIR las cantidades.
      =OBTENER_ATRIBUTOS(A1,B1,1,"importe")
      valor=426.67
      Si quieres trabajar como valor puedes usar la función =VALOR(OBTENER_ATRIBUTOS(A1,B1,0,"importe"))
      Y así ya podrías SUMAR, RESTAR, MULTIPLICAR O DIVIDIR las cantidades.
      ------------------------------------------------------------------------------------------------------------------------------------
      si en el XML están acomodadas diferente las retenciones
      Si quieres el IVA Retenido estenodo = 1, si quieres el ISR Retenido estenodo=0
      Los argumentos completos de la función serían:
      Para el IVA Retenido
      ruta ="C:\Users\carlos quezada\Documents\XMLconRetenciones.xml" (o A1 que tenga la ruta)
      nombrenodo ="cfdi:Retencion" o (B1 que contenga el nombre del nodo)
      estenodo =1 (o C1 que contenga el número de nodo iniciando dede 0)
      nombreatributo="importe" (o D1 que contenga el nombre del atributo)
      Para el ISR Retenido
      ruta ="C:\Users\carlos quezada\Documents\XMLconRetenciones.xml" (o A1 que tenga la ruta)
      nombrenodo ="cfdi:Retencion" o (B1 que contenga el nombre del nodo)
      estenodo =0 (o C1 que contenga el número de nodo iniciando dede 0)
      nombreatributo="importe" (o D1 que contenga el nombre del atributo)
      =OBTENER_ATRIBUTOS(A1,B1,0,"importe")
      valor=426.67
      Si quieres trabajar como valor puedes usar la función =VALOR(OBTENER_ATRIBUTOS(A1,B1,0,"importe"))
      Y así ya podrías SUMAR, RESTAR, MULTIPLICAR O DIVIDIR las cantidades.
      =OBTENER_ATRIBUTOS(A1,B1,1,"importe")
      valor=455.11
      Si quieres trabajar como valor puedes usar la función =VALOR(OBTENER_ATRIBUTOS(A1,B1,0,"importe"))
      Y así ya podrías SUMAR, RESTAR, MULTIPLICAR O DIVIDIR las cantidades. (los nodos se enumeran o indizan empezando desde cero hasta el número total de nodos menos uno.)
      O sea que el nodo cfdi:Retencion tiene dos nodos y se indizan 0 , 1 O sea que el nodo cfdi:Retencion tiene dos nodos y se indizan 0 , 1,
      Por lo tanto el nodo cfdi:Retencion índice 0 tiene los atributos
      importe="426.67" e impuesto="ISR"
      y el nodo cfdi:Retencion índice 1 tiene los atributos importe="455.11" e impuesto="IVA"
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Si quieres que te los acomode automáticamente usa la función de la siguiente manera:
      =OBTENER_ATRIBUTOS(A1,B1,0,"impuesto")
      Te devolverá IVA o ISR según este acomodado en el XML
      Y lo puedes acomodar si en tu encabezados colocas IVA y luego ISR
      Tienes que comparar el valor de la función con tus encabezados y escribir la función si anidada en el argumento estenodo.
      si tu encabezado es igual al valor de la función =OBTENER_ATRIBUTOS(A1,B1,0,"impuesto") poner cero y si no entonces 1.
      =VALOR(OBTENER_ATRIBUTOS(C7,D7,SI(F$6=E7,0,1);"importe"))
      F$6 para comparar siempre el encabezado.
      C7 sería la ruta
      D7 el nombre del nodo: cfdi:Retencion
      F6 Sería tu encabezado (que contiene el texto IVA o ISR según corresponda)
      E7 contendría la función =OBTENER_ATRIBUTOS(C7,D7,0,"impuesto")
      Acomoda esta función a tu Libro y obtendrás el resultado que deseas. Solo hay que pensar tranquilamente y hacer prueba y error hasta que te salga y no desesperarte.
      Bueno después de todo el discurso que ojalá y lo leas detenidamente antes de rendirte, espero que te sirva de ayuda.

    • @carlosquezada1782
      @carlosquezada1782 7 ปีที่แล้ว

      gracias amigo si me funciono, saludos

  • @dreamsadu
    @dreamsadu 7 ปีที่แล้ว

    Muy interesante el aporte, me gustaría contactarme con usted para enviarle un archivo

  • @ingridibarra6010
    @ingridibarra6010 4 ปีที่แล้ว

    Buenos días , me gustaría comunicarme contigo para una desarrollo si te interesa, que necesito y si tu lo puedes realizar como un servicio.

    •  4 ปีที่แล้ว

      Hola, mi correo es amaranto1114@gmail.com

  • @davocn7267
    @davocn7267 4 ปีที่แล้ว

    ESTA BIEN SOLO QUE IMAGÍNATE QUE QUE TENGAMOS QUE HACER ESO DE 100 XML,S , NO ACABARÍAMOS NUNCA DE TENER LA INFORMACIÓN

  • @EdgarGarcia-ie8zx
    @EdgarGarcia-ie8zx 6 ปีที่แล้ว

    segui todo al pide de la letra y no me sale al hacer la formula de excel este es mi codigo
    Private documentoxml As MSXML2.DOMDocument
    Private listanodos As MSXML2.IXMLDOMNodeList
    Private nodo As MSXML2.IXMLDOMNode
    Function carga(ruta)
    Set documentoxml = New DOMDocument
    documentoxml.Load (ruta)
    End Function
    Function comprobante(ruta, dato)
    carga (ruta)
    Set listanodos = documentoxml.SelectNodes("/cfdiComprobante")
    For Each nodo In listanodos
    comprobante = nodo.Attributes.getNamedItem(dato).Text
    Next
    End Function

    •  6 ปีที่แล้ว

      Es cfdi:Comprobante, solo añade los dos puntos.

    • @ricardoarteagahernandez9596
      @ricardoarteagahernandez9596 6 ปีที่แล้ว

      Debes revisar como esta esta escrito tu atributo en el archivo, en mi xml el atributo iniciaba con una mayúscula "Folio" en vez de "folio"
      también revisa tu formula, al escribir en excel a mi me funciono así:
      =comprobante(C1,"Folio")
      usando coma entre la celda de la dirección del archivo y el atributo.
      Saludos

  • @AndreaGomez-xd7dg
    @AndreaGomez-xd7dg 5 ปีที่แล้ว +1

    Excelente video, lastima que no me sirvió, al finalizar todos los paso, no pude correr la formula en excel, me marco error :(

    •  5 ปีที่แล้ว

      Muchas veces es porque tal como aparece en el XML debe ser escrito en la función.

  • @leosantiagohernandez657
    @leosantiagohernandez657 7 ปีที่แล้ว

    Hola buenas tardes, no me queda el archivo ya revise que este bien escrito pero me manda error #¡VALOR!

    •  6 ปีที่แล้ว

      Debe ser por las mayúsculas.

  • @gimnastasimss4097
    @gimnastasimss4097 ปีที่แล้ว

    Hola. Aquí actualizando para 2023 con versión 4.0.
    Private documentoxml As MSXML2.DOMDocument
    Private listanodos As MSXML2.IXMLDOMNodeList
    Private nodo As MSXML2.IXMLDOMNode
    Function carga(ruta)
    Set documentoxml = New DOMDocument
    documentoxml.Load (ruta)
    End Function
    Function Comprobante(ruta, dato)
    carga (ruta)
    Set listanodos = documentoxml.SelectNodes("/cfdi:Comprobante")
    For Each nodo In listanodos
    Comprobante = nodo.Attributes.getNamedItem(dato).Text
    Next
    End Function

    • @pedro525252
      @pedro525252 ปีที่แล้ว

      Como ves a estos que lo hacen gratis? th-cam.com/video/YpDOqeSKn1o/w-d-xo.html

    • @kualisanchez1710
      @kualisanchez1710 ปีที่แล้ว

      Cuando lo compruebo me da valor y no se porque

    • @kualisanchez1710
      @kualisanchez1710 ปีที่แล้ว

      Ya los tengo con, y también lo intente con ; y nada que me da el valor

  • @iramyagustincordovacastill2735
    @iramyagustincordovacastill2735 6 ปีที่แล้ว

    Hola buenas tardes, esta genial el programa y llegó a hasta el nodo que necesito. solo que al tratar de extraer el valor del atributo no me devuelve nada.
    De este nodo quiero sacar los datos:
    0
    0
    00000
    81DW22A016913720
    0
    0
    0
    495.59
    68008.62
    1370.08
    -978.24
    68896.05
    11023.36
    79919.41
    3444.8
    81028.01
    -81028
    83364.22
    Como puedo extraer los importes?

    •  6 ปีที่แล้ว

      Eso es porque tu XML no tiene la misma estructura, es decir, del tipo donde cada atributo tiene un nombre y un valor.

    • @iramyagustincordovacastill2735
      @iramyagustincordovacastill2735 6 ปีที่แล้ว

      Entonces no se puede extraer el dato, por el tipo de escritura?

    •  6 ปีที่แล้ว

      Sí se puede si gustas me podrías pasar tu correo y te ayudo.

  • @andresalvarez5961
    @andresalvarez5961 3 ปีที่แล้ว

    me sale 0

  • @eduardomunoz575
    @eduardomunoz575 6 ปีที่แล้ว

    error en formula excel 2010 =comprobante(B1;"TipoCambio") xml 3.3

  • @marioalucior
    @marioalucior 5 หลายเดือนก่อน

    UPPS NO ME FUNCIONÓ

  • @juanpedroza1672
    @juanpedroza1672 6 ปีที่แล้ว

    Hola, muy bueno tu aporte, pero esto se da para nodos con varios atributos, pero como podria hacerlo para nodo hijo, ejemplo:
    3241-2211-2294-1
    900331273
    LABORATORIO DE PATOLOGIA Y CITOLOGIA DR RODRIGO R
    SEDE POBLADO
    -
    PA17
    estaré atento gracias

    •  6 ปีที่แล้ว

      ¿Hola, de qué país eres? Si queres pásame tu correo y te ayudo.

  • @sindygoold6318
    @sindygoold6318 ปีที่แล้ว

    PERDI MI TIEMPO VIENDO ESTE VIDEO