Tres preguntas VBA

Soy nuevo en esto de VISUAL BASIC, como para aprender me he decidido por una aplicación simple, pese a lo simple me ha causado algunos problemas por desconocimiento.
Primero la explicación, hay un archivo donde se anotan todos los oficios que salen del tribunal donde trabajo, pero este archivo pesa mucho, generalmente alguien lo está ocupando y hay que comenzar a llamar a cada unidad a fin que lo liberen.
He armado una aplicación de forma que ingresen los datos en los textbox y luego de presionar ejecutar el archivo a que se refiere se abra, pegue los datos y se sierre.
Has ahí todo bien, aunque aun no lo ejecuto.
Private Sub CommandButton1_Click()
Dim Resp As Integer
Resp = MsgBox("los datos son correctos", vbQuestion + vbYesNo + vbDefaultButton2, "VERIFICACIÓN DE DATOS")
If Resp = 6 Then
TextBox1.Text = Date
Workbooks.Open ("D:\xxxxx\0FICIOS TRIBUNAL 2011.xls")
Sheets("2011").Select
Range("c1").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = TextBox1
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox2
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox3
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox4
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox5
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox6
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox7
ActiveCell.Offset(0, 1).Select
Respuesta = MsgBox("Oficio N° " & ActiveCell & "-2011", vbOKOnly / vbInformation, "N° DE OFICIO")
ActiveWorkbook.Close Savechanges:=True
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
TextBox7 = Empty
End If
End Sub

Ahora desconozco algunas cosas, por ejemplo:
Ya que el archivo es muy pesado y se demora en abrir ¿hay alguna forma de pegar los datos sin abrir el archivo?
¿Si pego esta aplicación en los escritorios de mis compañeros y dos exportan datos al mismo tiempo que pasara? ¿Cómo evito que pase?
Al anotar el siguiente código en "thisworkbook" me permite ver solo mi aplicación, sin ver la planilla exel desde donde la cree sin problema, pero cuando presiono el botón que puse para abrir el archivo me dice que el archivo ya está abierto (esto con un archivo de prueba que está en mi pc y no con el que tengo que ocupar que está en otro pc)¿Cómo puedo solucionar este problema?
Private Sub Workbook_Open()
Application.Visible = False
UserForm.Show
End Sub

De ante mano muchas gracias.
{"Lat":-39.3662221322774,"Lng":-73.1233155727386}

1 respuesta

Respuesta
1
Por mi experiencia, veo que tienes un problema serio, mientras más crítico sea el archivo del que hablas más serio es el problema.
Primero contestare tus preguntas:
1.- No hay forma de insertar datos en un archivo sin abrirlo antes.
2.- Lo peor que puede pasar es que todos se queden esperando a que abra tu archivo y finalmente ninguno consiga abrirlo.
3.- Puedes comprobar que el archivo no esté abierto antes de abrirlo, bastará que alguien abra el archivo en forma tradicional para que tu aplicación no funcione.
4.- Si el archivo está en tu pc pregunta si esta abierto, si no lo está, lo abres.
Ahora te doy mi consejo:
Para lo que quieres hacer la solución no es VBA, de hecho ni siquiera MS Access resolvería de verdad tu problema.
La primera solución que se me ocurre es tener una aplicación Cliente-Servidor para cada usuario, esta aplicación podría estar hecha en Visual Basic y podría tener una base de datos Access. Aunque te recomiendo postgres o mysql y en el mejor de los casos MS SQL Server u Oracle. Esta solución tiene el inconveniente que para que tus usuarios ingresen los datos deben tener instalado el programa en sus PCs y cada ves que se corrompan sus pcs, los formateen y/o aparezcan nuevos usuarios vas a tener que instalar nuevamente la aplicación.
La segunda solución, a mi juicio es la mejor y consiste en hacer una página web en donde tus usuarios puedan consultar e ingresar los datos, en este caso no tendrías ninguno de los problemas antes descritos. No tienes problemas de concurrencia, tampoco de instalación, garantiza la integridad de los datos, centraliza la información y permite automatizar los respaldos. Lo mejor de todo es que todas las herramientas que necesitas para implementarla son gratuitas.
Si te interesa yo podría ayudarte a implementar una solución como la que te comento.
Claro que me interesa, ya hay un portal en el tribunal, supongo que en este lo puedo implementar, me puedes explicar cómo hacerlo y que mejorar de mi aplicación, arriba descrita o derechamente si hago otra... de no poder, favor infórmame donde me puedo informar de esto...
Muchas gracias de antemano
Te recomiendo hagas una nueva aplicación.
Esta nueva aplicación tendría una base de datos mysql y debería estar programada en php.
Para que esto funcione en el servidor donde está alojado tu portal debería estar implementado en apache y tener mysql.
Averigua si el servidor tiene Apache y MySql y te sigo orientando por qué camino ir.
Porque de lo contrario, si tu servidor tiene IIS tendrías que hacer tu aplicación en ASP y con Access.
En todo caso, montar un servidor web no es para nada complicado y mientras desarrollas la aplicación vas a tener que tener tu propio servidor para hacer pruebas.
Investiga WAMP, es un paquete que te instala todo lo necesario para un servidor web.
Para desarrollar tu aplicación investiga Dreamweaver.
Con esas dos cosas tienes todo lo necesario para desarrollar tu aplicación.
El único problema es que hay una curva de aprendizaje que superar y por lo que me cuentas, ya estas teniendo problemas con el archivo.
Pero si puedes instalar wamp en tu pc yo podría modificar una aplicación muy parecida a la que me cuentas y mientras tu vas desarrollando tu aplicación definitiva a medida para el problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas