Los documentos de MS Word tienen un componente de Visual Basic que permite que los procesos se ejecuten cuando ocurren eventos específicos.
Uno de estos eventos es Document_New()
, que puede usarse de esta manera para mostrar un "UserForm" que también forma parte del documento de Word:
Private Sub Document_New()
Dim myForm As UserForm1
Set myForm = New UserForm1
myForm.Show
End Sub
El UserForm se parece a un formulario VB6 o MS Access y se pueden agregar varios controles para recopilar información del usuario. En este caso, se colocaría un botón "Enviar" que tenga un evento OnClick()
que acceda a la base de datos y devuelva un juego de registros usado en el documento / plantilla.
El código subyacente puede ejecutar consultas SQL en un servidor SQL utilizando un modelo de objetos DAO o ADODB.
El objetivo es ejecutar alguna consulta SQL o procedimiento almacenado que devuelva los datos necesarios para el documento de Word. Todo esto se puede hacer con código y hay un millón de ejemplos y formas de hacerlo.
Sin embargo ... La cadena de conexión para el controlador ODBC o la conexión ADODB deja el nombre del servidor / nombre de usuario / contraseña visible para quien tenga acceso al documento o plantilla de Word (es decir, el usuario abre el documento / plantilla en Word y mira el VB código y ahora puede conectarse y hacer cualquier cosa en las tablas de la base de datos).
¿Cómo puedo crear esta funcionalidad pero no permitir que las propiedades de la cadena de conexión sean visibles para alguien que usa el documento / plantilla?
Si fuera una aplicación VB6, podría compilarse. Pero esto es solo un documento o plantilla de Word y no se puede compilar.
No creo que la funcionalidad "Encriptada" se aplique aquí. Eso simplemente cifra los datos a través de la red. Las propiedades de la cadena de conexión aún son visibles para el ojo curioso.