Problema con RefreshAll
Resuelto
crouba33
Mensajes publicados
9
Estado
Miembro
-
ptitpanda Mensajes publicados 67 Estado Miembro -
ptitpanda Mensajes publicados 67 Estado Miembro -
Buenas noches
Le presento el siguiente problema para el que no he encontrado solución pese a mis búsquedas en distintos sitios relacionados.
Al abrir mi archivo ejecuto una Sub que debe actualizar un enlace con una Google Sheet publicada en la web, abrir el formulario principal de mi aplicación y lanzar un procedimiento de actualización de mis datos.
Private Sub Workbook_open() 'abre el Menú al inicio
UsF_Menu.Show
Me.RefreshAll
End Sub
Todo funciona si la Google Sheet está publicada correctamente. Por el contrario, si la publicación no está activa (por motivos de datos sensibles), me aparece un cuadro de diálogo que informa que no se han encontrado los datos correspondientes.
Me gustaría poder eliminar ese cuadro de diálogo y dejar que el programa continúe con la llamada a un procedimiento que actualice mi base de datos principal a partir de los datos recopilados. Dependiendo de la velocidad de la conexión a Internet, esta importación puede demorar más o menos. Por tanto, necesito retrasar la ejecución del procedimiento. He probado ontime, wait sin éxito. Es cierto que no he entendido del todo el uso de estas propiedades.
De nuevo, agradecería soluciones.
Gracias de antemano
Claude
Le presento el siguiente problema para el que no he encontrado solución pese a mis búsquedas en distintos sitios relacionados.
Al abrir mi archivo ejecuto una Sub que debe actualizar un enlace con una Google Sheet publicada en la web, abrir el formulario principal de mi aplicación y lanzar un procedimiento de actualización de mis datos.
Private Sub Workbook_open() 'abre el Menú al inicio
UsF_Menu.Show
Me.RefreshAll
End Sub
Todo funciona si la Google Sheet está publicada correctamente. Por el contrario, si la publicación no está activa (por motivos de datos sensibles), me aparece un cuadro de diálogo que informa que no se han encontrado los datos correspondientes.
Me gustaría poder eliminar ese cuadro de diálogo y dejar que el programa continúe con la llamada a un procedimiento que actualice mi base de datos principal a partir de los datos recopilados. Dependiendo de la velocidad de la conexión a Internet, esta importación puede demorar más o menos. Por tanto, necesito retrasar la ejecución del procedimiento. He probado ontime, wait sin éxito. Es cierto que no he entendido del todo el uso de estas propiedades.
De nuevo, agradecería soluciones.
Gracias de antemano
Claude
4 respuestas
Buenas noches,
De nada porque al final nada te fue útil, pero lo principal es que lograste resolver el problema :)
Felices fiestas.
Nos vemos.
De nada porque al final nada te fue útil, pero lo principal es que lograste resolver el problema :)
Felices fiestas.
Nos vemos.
Buenas noches,
No sé si he entendido todo, pero cuando dices:
¿Es un mensaje de error?
si es así, utiliza una gestión de errores ("ON ERROR GOTO gest_err") así ya no tendrás el cuadro de diálogo y al final de tu procedimiento, bajo "gest_err:" puedes, por ejemplo:
- mostrar un userform no modal que solicite paciencia o que explique la lentitud
- y luego un pequeño "Resume next" que te haga retomar donde estabas en el procedimiento.
Luego - colocar la instrucción "DoEvents" en lugar de WAIT ... justo detrás de la orden de actualización que tendrá como efecto esperar a que termine la actualización antes de continuar la macro
Basta con adaptar un poco eso a tu necesidad.
Buenas noches
Hasta pronto
No sé si he entendido todo, pero cuando dices:
si la publicación no está activa (por razones de datos sensibles), recibo un cuadro de diálogo que me informa que no se encontraron los datos correspondientes.
¿Es un mensaje de error?
si es así, utiliza una gestión de errores ("ON ERROR GOTO gest_err") así ya no tendrás el cuadro de diálogo y al final de tu procedimiento, bajo "gest_err:" puedes, por ejemplo:
- mostrar un userform no modal que solicite paciencia o que explique la lentitud
- y luego un pequeño "Resume next" que te haga retomar donde estabas en el procedimiento.
Luego - colocar la instrucción "DoEvents" en lugar de WAIT ... justo detrás de la orden de actualización que tendrá como efecto esperar a que termine la actualización antes de continuar la macro
Basta con adaptar un poco eso a tu necesidad.
Buenas noches
Hasta pronto
Hola y gracias ptipanda por esta respuesta
Te paso todas las explicaciones que tomarían muchas líneas. En resumen tengo este procedimiento
Sub WorkBook_Open()
me.refreshAll
UsF_Menu.Show
End Sub
que se ejecuta al abrir mi archivo.
y este cuadro de diálogo tras un tiempo más o menos variable según el estado de mi conexión a Internet.
[imagen]
que se abre si no he previamente “publicado en la web” (abierto el enlace entre mi Google Sheet y el resto del mundo).
Me gustaría que este cuadro no apareciera para no tener que pulsar OK y que el procedimiento pueda terminar.
He intentado posicionar On Error y DoEvents de varias formas sin resultado. Esta ventana aparece siempre. ¿Es de verdad un error? Me parece que sí según los ensayos realizados con la gestión de errores.
¿Tienes una idea del código que podría funcionar?
Gracias en cualquier caso por tu primera pista.
A la espera de tus comentarios.
Claude
Te paso todas las explicaciones que tomarían muchas líneas. En resumen tengo este procedimiento
Sub WorkBook_Open()
me.refreshAll
UsF_Menu.Show
End Sub
que se ejecuta al abrir mi archivo.
y este cuadro de diálogo tras un tiempo más o menos variable según el estado de mi conexión a Internet.
[imagen]
que se abre si no he previamente “publicado en la web” (abierto el enlace entre mi Google Sheet y el resto del mundo).
Me gustaría que este cuadro no apareciera para no tener que pulsar OK y que el procedimiento pueda terminar.
He intentado posicionar On Error y DoEvents de varias formas sin resultado. Esta ventana aparece siempre. ¿Es de verdad un error? Me parece que sí según los ensayos realizados con la gestión de errores.
¿Tienes una idea del código que podría funcionar?
Gracias en cualquier caso por tu primera pista.
A la espera de tus comentarios.
Claude
¡Vaya!
Ya lo tengo. En realidad el error lo provoca la consulta que establece la vinculación entre los dos archivos.
Durante intentos de depuración, había generado una columna adicional en mi tabla local de Excel, columna que no veía en la pantalla. La consulta buscaba esa columna en el archivo en línea, que por supuesto no la tenía. de ahí el mensaje de error "No hemos encontrado la columna "Column1"...
He eliminado la culpable y ahora todo funciona sin ON ERROR GOTO ni DOEVENTS.
Como se dice, empeñarse no siempre es inútil.
Gracias de nuevo por la ayuda
Ya lo tengo. En realidad el error lo provoca la consulta que establece la vinculación entre los dos archivos.
Durante intentos de depuración, había generado una columna adicional en mi tabla local de Excel, columna que no veía en la pantalla. La consulta buscaba esa columna en el archivo en línea, que por supuesto no la tenía. de ahí el mensaje de error "No hemos encontrado la columna "Column1"...
He eliminado la culpable y ahora todo funciona sin ON ERROR GOTO ni DOEVENTS.
Como se dice, empeñarse no siempre es inútil.
Gracias de nuevo por la ayuda