VBA para reemplazar WebService y FilterXML en Excel 2010 y versiones anteriores

VBA para reemplazar WebService y FilterXML en Excel 2010 y versiones anteriores

Creé una hoja de cálculo de Excel en Excel 2016 que utiliza fórmulas WebService y FilterXML para interactuar con la API de Bing y arrastrar datos desde ella. Las fórmulas funcionan muy bien en Excel 2016, pero cuando la hoja de cálculo se carga en versiones anteriores de Excel 2010, etc., genera un #¿Nombre? error y no devuelve resultados. Creo que esto se debe a que las fórmulas Webservice y FilterXMl no son compatibles con versiones anteriores de Excel.

Básicamente, el código debería:

Tome una clave API de la celda C2 en una hoja llamada Hoja2 Tome la ubicación inicial de la celda C25 (esto es variable y el usuario puede cambiarla) Tome la ubicación final de la celda D25 (esto es una variable y el usuario puede cambiarlo) ) Tome el modo de transporte de la celda C27 ​​(esta es una variable y el usuario puede cambiarla) La URL debe mostrarse en C29 (el código actual para esto es: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(distancia.url,"$1 ",C25),"$2",D25),"$3",modo.viaje),"$k",bingmaps.key)

Esto generará una respuesta en la celda C31: "es decir, la salida sin formato (aquí es donde WebService) se está utilizando en este momento". El código es: =WEBSERVICE(C29) Esto generará un código de estado en la celda C32, es decir, 200 (aquí es donde se usa =FILTERXML(C31,"//StatusCode[1]" en este momento)

=FILTERXML(C31,"//TravelDistance[1]") luego se usa en la celda C34 para tomar la distancia de viaje desde C31 =FILTERXML(C31,"//TravelDuration[1]") luego se usa en la celda C35 para mostrar la duración desde C31 en minutos

Gracias.

Respuesta1

Dios mío, supongo que podría ser más fácil simplemente actualizar los clientes antiguos que intentar implementar esto de manera confiable en versiones anteriores de Excel. Recuerdo haber usado el objeto IE en VBA hace algunos años. No era muy estable, pero luego estaba cargando un sitio completo, no solo una llamada http get.

Eche un vistazo aquí para obtener información más detallada.https://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010

Un truco más sencillo que empleé recientemente fue extraer datos web directamente a Excel como fuente de datos web (Datos > Desde web). Descarté toda la respuesta HTML de un feed de Twitter directamente en una hoja en blanco, luego utilicé fórmulas de búsqueda para encontrar la fila y columna de datos que quería. Quiero recordar que incluso podría ejecutar un asistente de "texto a columnas" automáticamente después de una actualización de datos. Todo esto se hizo sin VBA, por lo que no se necesitan archivos xlsm ni la gente tiene miedo de habilitar macros.

PD. Ahora intenté abrir esa misma hoja en mi computadora actual (Windows 10, Office 2016) en comparación con la anterior (¿Windows 7, Office 2010 o 13?). Se queja de que JavaScript está deshabilitado en el navegador (que supongo que internamente sigue siendo un objeto de Internet Explorer y no un borde).

información relacionada