Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
Error "El objeto no admite esta propiedad o método" en VBA al usar la biblioteca de referencia de IE para ejecutar JS (MS Excel)

Estoy tratando de ejecutar un código JS dentro de mi libro de trabajo de Excel, así que descubrí las referencias de Internet Explorer y Microsoft HTML, y construí este código con algo de inspiración de https://stackoverflow.com/a/31532085 -

 Dim hf As Integer: hf = FreeFile Dim data As String Open "C:\Users\karti\Desktop\3CD-MRL v4 testing\test.json" For Input As #hf data = Input$(LOF(hf), #hf) Close #hf Debug.Print data ' json data received from file, now sending it to the js code Dim objIE As SHDocVw.InternetExplorer Dim currentWindow As HTMLWindowProxy Dim Url As String: Url = "C:\Users\karti\Desktop\3CD-MRL v4 testing\test.html" Dim codez As String: codez = "func = function(){return myFuncReturns('" & data & "');}; retVal = func();" Set objIE = New SHDocVw.InternetExplorer objIE.navigate Url objIE.Visible = 0 Do While objIE.readyState <> 4 DoEvents Loop Set currentWindow = objIE.document.parentWindow currentWindow.execScript code:=codez Dim result As Long result = objIE.document.Script.retVal 'here i am supposed to get the updated json Debug.Print result objIE.Quit Set objIE = Nothing

y aquí está el código de mi archivo test.html (que está configurado en la variable URL en el código VBA):

 <!-- saved from url=(0016)http://localhost --> <html> <head> <script type="text/javascript"> function myFuncReturns(json) { let jsonObject = JSON.parse(json); jsonObject["status"] = "done"; return JSON.stringify(jsonObject); } </script> </head> </html>

Mi código JS es muy simple, recibe json en cadena, convierte en objeto, agrega un parámetro llamado estado al json, vuelve a convertir el objeto actualizado en cadena y devuelve la cadena json a vba. En mi código VBA, acabo de leer datos de un archivo json local, lo envío a mi archivo html usando la referencia de IE y recibo una cadena json actualizada en la variable de result , pero recibo el 'Error de tiempo de ejecución 438 - El objeto no es compatible con esto error de propiedad o método y esto se resalta, con result=0 que se muestra en el depurador -

¿Qué pasa con mi código? ¿Qué tengo que hacer? Amablemente guía... ¡Gracias! :)


Editar: solo para depurar, eliminé return JSON...; de JS y lo convertimos en una alerta con alert(...); y también eliminó temporalmente la línea result = ... de VBA (ya que no tiene uso con una alerta). ¡Y funciona! Recibí una ventana emergente en mi pantalla que contenía el JSON actualizado después de ejecutar la macro. Significa que mi código VBA está enviando los datos, simplemente no los está recibiendo en la variable de result . ¿Qué podría estar mal?

about 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda