Como puedo modificar esta macro para que extraiga datos de una sección CDATA de mi archivo .xml
Cordiales a todos.
Encontré este código muy útil en este grupo de TODOEXPERTOS el cual modifique a mis necesidades para extraer los datos de archivos xml a una hoja de Excel.
Sub Extraerdatos() Dim MiPc, Carpeta, Archivos, Archivo Dim y, Fila, estado Application.ScreenUpdating = False Fila = Range("A" & Rows.Count).End(xlUp).Row + 1 Set MiPc = CreateObject("Scripting.FileSystemObject") Set Carpeta = MiPc.GetFolder(Range("B1").Value) Set Archivos = Carpeta.Files For Each Archivo In Archivos If LCase(Right(Archivo.Name, 4)) = ".xml" Then Workbooks.OpenXML Filename:=Archivo y = 1: estado = "" Do Until Cells(2, y) = "" If Trim(Cells(2, y)) = "/estado" Then estado = Cells(3, y) End If If Trim(Cells(2, y)) = "/fechaAutorizacion" Then fecha = Cells(3, y) End If If Trim(Cells(2, y)) = "/numeroAutorizacion" Then nAutorizacion = Cells(3, y) End If If Trim(Cells(2, y)) = "/comprobante/factura/infoTributaria/ruc" Then ruc = Cells(3, y) End If y = y + 1 Loop '-- Archivo = ActiveWorkbook.Name ActiveWorkbook.Close Range("A" & Fila) = Archivo Range("B" & Fila) = estado Range("C" & Fila) = fecha Range("D" & Fila) = nAutorizacion Range("E" & Fila) = ruc Fila = Fila + 1 End If Next End Sub
El problema surge en el momento que deseo extraer el dato de ruc el cual se encuentra dentro de una sección CDATA por lo que no lo reconoce. Adjunto el código del archivo .xml
<?xml version="1.0" encoding="UTF-8"?> <autorizacion> <estado>AUTORIZADO</estado> <numeroAutorizacion>1703201515411617921521270013730687438</numeroAutorizacion> <fechaAutorizacion>2015-03-17T15:41:16.486-05:00</fechaAutorizacion> <comprobante> <![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <factura id="comprobante" version="1.0.0"> <infoTributaria> <ambiente>2</ambiente> <tipoEmision>1</tipoEmision> <razonSocial>UNNOCYCLES CIA. LTDA.</razonSocial> <nombreComercial>UNNOCYCLES CIA. LTDA.</nombreComercial> <ruc>1792152127001</ruc> </infoTributaria> </factura> ]]> </comprobante> </autorizacion>
Muchas gracias de antemano a todos los que se den el tiempo de leer mi inquietud.
1 respuesta
Respuesta de Elsa Matilde
1