una query que parametros otra hoja hacer hace habilitar ejecutar desde datos cómo consulta conexiones con automáticamente automaticamente actualizar actualice excel vba web-services events event-handling

query - ¿Cómo puedo postprocesar los datos de una consulta web de Excel cuando se completa la consulta?



excel actualizar datos automaticamente (2)

Excel admite la capacidad de abrir una URL como otro libro de Excel, a través del método Workbooks.Open :

Desde MSDN:

Sub OpenUSDRatesPage() Dim objBK As Workbook Dim objRng As Range ''Open the page as a workbook. Set objBK = Workbooks.Open("http://www.x-rates.com/tables/USD.HTML") ''Find the Canadian Dollar cell. Set objRng = objBK.Worksheets(1).Cells.Find("Canadian Dollar") ''Retrieve the exchange rate. MsgBox "The CAD/USD exchange rate is " & objRng.Offset(-6, -1).Value End Sub

La llamada es sincrónica, por lo que puede operar en los datos resultantes en el nuevo libro de trabajo inmediatamente después de la llamada abierta.

Mientras se carga el libro, Excel mostrará una barra de progreso. Cuando termine, puede llamar. Cerrar para cerrar el libro de datos web. (por ejemplo, para el ejemplo de MSDN, llamarías a objBK.Close cuando hayas terminado).

Las advertencias de usar este enfoque:

  1. Usted está al tanto para migrar los datos del libro de trabajo web al suyo ( ThisWorkbook ) usted mismo, a diferencia de una consulta web de Excel renovable que tiene un destino establecido.
  2. Si su punto final web tiene un nombre de documento que coincide con el nombre de un documento abierto en Excel, el usuario recibirá una advertencia de que está abierto un documento con el mismo nombre.

Como desarrollador de hojas de cálculo, intento unir dos conjuntos de filas: una desde una consulta web a un servicio web que poseo, y la otra un conjunto de filas manuales agregadas por el usuario de la hoja de cálculo (no yo).

El objeto Web Query / Connections integrado de Excel solo proporciona dos modos: puedo activar "Habilitar actualización de fondo", lo que hace que la consulta web sea asíncrona, o desmarcarla.

Si no se selecciona, Excel se congela mientras se ejecuta la consulta, lo que no es deseable. Si se comprueba, no parece haber ningún tipo de devolución de llamada o evento disponible para ser notificado, de modo que pueda operar contra los datos web actualizados.

Hay otra manera de hacer esto?


Una consulta web de Excel utiliza un objeto llamado QueryTable para llevar a cabo la tarea de recuperar y mostrar los datos.

A QueryTable se puede acceder por VBA.

Y al igual que el objeto de gráfico, un objeto consultable tiene eventos a los que solo se puede responder utilizando la palabra clave WithEvents de un módulo de clase , de esta manera:

Private WithEvents MyQueryTable As QueryTable Private Sub MyQueryTable_AfterRefresh(ByVal Success As Boolean) ''Do your post processing here... End Sub