Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!