es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Decodificar Base64 XML VBA

Estoy intentando decodificar en base64 un archivo XML en VBA, pero obtengo este error al usar esta función:

enter image description here

Esa función funciona para decodificar cadenas de texto normales, pero al intentar decodificar un archivo XML con ella, obtengo ese error. ¿Alguien tiene alguna idea de qué debo modificar para que funcione?

Function Base64Decode(ByVal vCode)
    Set oNode = CreateObject("Msxml2.DOMDocument.3.0").CreateElement("base64")
    oNode.dataType = "bin.base64"
    oNode.Text = vCode
    Base64Decode = oNode.nodeTypedValue
    Set oNode = Nothing
End Function
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en el tipo de datos que la función está devolviendo. El mensaje de error dice “No se puede almacenar un objeto de tipo Variant en XML”, lo que sugiere que el valor devuelto es un objeto en lugar de una cadena o datos binarios.

    Una solución podría ser modificar la función para devolver una cadena o datos binarios en lugar de un objeto. Una forma de hacer esto sería utilizar el objeto ADODB.Stream para convertir la cadena base64 en datos binarios y luego devolver los datos binarios como una cadena. Aquí tienes un ejemplo de función que hace esto:

    Function DescodificarBase64(ByVal vCode)
        Dim oStream As Object
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Type = 1
        oStream.Open
        oStream.WriteText vCode
        oStream.Position = 0
        oStream.Type = 2 'binario
        DescodificarBase64 = oStream.Read
        oStream.Close
        Set oStream = Nothing
    End Function
    

    Esta función crea un objeto ADODB.Stream, establece su tipo en 1 (texto), escribe la cadena base64 en él, luego establece el tipo en 2 (binario) y lee los datos binarios devueltos. Finalmente, devuelve los datos binarios como una cadena.

    Podrías modificar esta función aún más para devolver los datos binarios como una matriz de bytes u otro tipo de datos si es necesario. Pero esperemos que esta modificación te permita decodificar tu archivo XML sin errores.

Comments are closed.