Cómo compartir formularios Excel en red

Estoy desarrollando un programa en Excel, este trabaja con formularios, lo que necesito es que cuando yo capturo en un formulario se refleje en otro... Esto ya lo logré siempre y cuando esté trabajando en el mismo equipo, pero al momento de compartir el archivo en red no se ve reflejada la información que registro.

1 respuesta

Respuesta

[Hola

No queda muy claro tu dilema pero una opción es usar la herramienta de "Libro compartido", la cuestión es que las macros en dichos libros tienen los mismos límites propios de la herramientas. Mira en este enlace las "características no compatibles":

https://support.office.com/es-es/article/acerca-de-la-caracter%C3%ADstica-de-libro-compartido-49b833c0-873b-48d8-8bf2-c1c59a628534

En general no es muy recomendable compartir información en red con un mismo archivo de Excel, quizá te sea más práctico, de insistir con Excel, en tener en la red un archivo como base de datos y en cada PC un Excel que trabaje y/o almacene los datos en dicha base de datos.

Abraham Valencia

El archivo lo tengo compartido en red, lo que necesito es que cuando yo capture información en un formulario desde una máquina esta información se sincronice con otro formulario y se pueda visualizar desde otra máquina..

Es decir..la información que capturo se almacena en Excel, y entiendo que al compartir el archivo no se verá la información hasta que en las dos maquinas se de guardar. Lo que busco es que se actualice la información en todas las máquinas donde se tenga abierto el archivo en el momento que se capture la información 

A ver, solo por si acaso, en ese libro entonces ¿está activada la opción de "Compartir libro"? Ojo que no es lo mismo que tener el libro compartido en una unidad de red para que cualquiera acceda. De estar activada dicha opción entonces es suficiente que cualquier usuario guarde la información para que los otros puedan visualizarla así qué sigue sin quedar claro tu dilema. Si cuando dices formularios te refieres a los Userform de VBA, basta usar Save para lograr el mismo efecto ¿o a qué te refieres con precisión?

Abraham Valencia

Así es, tengo habilitada la opción compartir libro. 

Tengo un userform que alimenta una hoja de cálculo mediante textbox y combobox, dentro del mismo userform dicha información se muestra en forma de tabla en un listview..todo esto se hace desde la misma máquina. Lo que estoy buscando es que lo que se ingresa aquí se pueda visualizar en otro listview de otro userform de manera automática desde otra máquina.

pero el segundo userform no me carga la información debido a que para que se cargue es necesario guardar en las dos maquinas. No tengo problema al guardar desde el userform que se captura la información, el problema es como guardo de manera automática el libro desde el otro userform sin necesidad de dar click en algún botón.

Y el libro lo tengo guardado en una ubicación de red compartido mediante la opción compartir libro

Ya lo logré..en el evento open de thisworkbook lo configuré para que cada cierto  tiempo se guarde, ahora el problema es que cada que se cumple el tiempo me muestra el cursor de Windows comienza a girar ..deshabilito el evento mediante application.enableevents y ahora ya no se guarda.. saben que puedo hacer para que no se esté mostrando el cursor girando cada que se guarda?

[Hola

En realidad la única forma en que un usuario guarde desde un Userform datos y que en otra PC se reflejen esos mismos datos recién guardado en otra PC en un ListView de un Userform, pues es que ese ListView se cargue cada "x" minutos a través de OnTime. Habría que activarlo a través del evento Initialize del Userform (no usando el evento Open del libro), y que cada "x" minutos cargue el ListView, el dilema es que OnTime es un tanto inestable y tiende a afectar otros archivo abiertos y será inevitable ver un pequeño "destello" cada vez que cargue el Listview.

En todo caso, si te animas, sería así:

En el módulo del Userform, tendrás que hacer algunos cambios:

Private Sub UserForm_Initialize()
ActualizarListview
End Sub
Sub llenar()
'aquí todas las instrucciones con las que llenas tu Listview
End Sub
Private Sub UserForm_Terminate()
Detener
End Sub

Y luego en un módulo estándar:

Sub Tiempo()
Application.OnTime Now + TimeValue("00:05:00"), _
    Procedure:="ActualizarListview", _
        Schedule:=True
End Sub
Sub ActualizarListview()
UserForm1.llenar
Call Tiempo
End Sub
Sub Detener()
'Detiene el "OnTime"
On Error Resume Next
Application.OnTime EarliestTime:=Now + TimeValue("00:05:00"), _
    Procedure:="ActualizarListview", _
        Schedule:=False
End Sub

Yo ahí lo he puesto cada cinco minutos, ya tú adapta y pon el tiempo que consideres necesario.

Abraham Valencia

Gracias por tu apoyo. Efectivamente lo hice mediante ontime y lo corregi colocándolo en el evento initialize, pero ahora el problema es que tengo varios textbox para capturar información y si al momento que se cumple el tiempo para ejecutarse la marco de llenado oprimo la tecla shift, se cancela la marco y se cierra Excel 

¿Y para qué o por qué presionas la tecla Shift? Si la tienes asignada a "algo" como una macro por ejemplo, la recomendación es nunca usar para esas cosas dicha tecla ¿o se trata de otra cosa?

Abraham Valencia

Lo qué pasa es cada que se oprime la tecla shift se cancela la marco sin importar que el userform no esté activo, es decir, si tengo abierto el userform y estoy trabajando por ejemplo en un bloc de notas y necesito oprimir shift para X situación se cierra el userform...

Ya utilicé una marco para cancelar el ontime en el evento deactivate pero aún así se cierra 

Si bien shift tiene un comportamiento "extraño" con la macros en muchas ocasiones, no recuerdo un comportamiento como el que mencionas, más aún si comentas que incluso ocurre cuando tienes otro programa abierto. Quizá algún evento del Userform o algún objeto en él ocasionan eso, pero la única forma de saberlo es viendo el archivo. Mientras tanto ve mirando bien esos eventosm en especial los que detectan a la tecla Shift.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas