2011-05-24 14 views
5

Tengo una hoja de cálculo de Excel 2010 que obtiene información de una conexión de datos. En las propiedades de la conexión, se encuentra la "cadena de conexión", que es una URL con varios parámetros que se pasan al servidor en la cadena de consulta. Si hace clic en "editar consulta", puede cambiar la URL y luego importar datos nuevos en función de la nueva URL. Necesito hacer esto a través de VBA.cambio de una URL para consulta web de Excel

Digamos que la cadena de conexión es actualmente http://myserver.com?name=foo Necesito cambiar eso a http://myserver.com?name=bar

¿Cómo puede hacerse esto?

+0

[Cadenas de conexión] (http://en.wikipedia.org/wiki/Connection_string) y las URL son cosas completamente diferentes. – pyon

+0

¿quiere decir que esta es una 'consulta web'? –

+0

Uhm, no en este contexto no lo son. La cadena de conexión es la URL que se usará para conectarse al servidor. Mire la redacción usted mismo en Excel. –

Respuesta

6
With ActiveSheet.QueryTables(1) 
    .Connection = "URL;" & NewURL 
    .Refresh 
End With 
+0

Impresionante, gracias. Preguntas de seguimiento: ¿Puedo referirme a la conexión de otras formas en lugar de 'ActiveSheet.QueryTables (1)'? ¿Tal vez por nombre, por ejemplo? Y, por último, después de hacer la actualización quiero guardar el libro para que no se le pida al usuario que lo haga cuando lo cierren, pero si intento 'ThisWorkbook.Save' después de su bloque' With', recibo un mensaje que dice: el 'Save' cancelará el' Refresh' pendiente. Supongo que está intentando guardar antes de que termine la actualización. ¿Hay alguna manera de que pueda manejar esto? –

+0

Le sugiero que intente grabar una macro mientras crea una nueva consulta web. El código grabado le mostrará las opciones disponibles: creo que "Nombre" y "BackgroundQuery" son las propiedades que le interesan. Si configura BackgroundQuery en False, debe finalizar la actualización antes de que su código pase a la operación Guardar. –

+0

Gracias @Tim. Acabo de encontrar la propiedad 'Backgroundquery: = false' y funciona muy bien. –

Cuestiones relacionadas