2012-03-05 31 views
6

he almacenado en el siguiente macro de Excel: -cómo enmascarar excel código de macro

Sub Sales() 

Dim StrSQl As String 

Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56" 

Set Db = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.recordset") 
Db.connectionSTring = Con 
Db.Open 
StrSQl = "select myuc, sum (myac) as Amount from myabc.myqwerty where mydt >= 20100101 and mydt <= 20100831 group by (mycl)" 
rs.Open StrSQl, Db, 3, 3 
Sheet1.Cells(10, 1).CopyFromRecordset rs 
rs.Close 
Set rs = Nothing 
Set cn = Nothing 
End Sub 

deseo para enmascarar el ID de usuario Contraseña & decir, por encima. User Id=****;Password=***** como parte de la seguridad.

¿Es esto posible?

+2

Yo diría que la contraseña protege el proyecto vba. – Pynner

+0

Ok, pero no es la mejor opción. Hay formas de descifrarlo, pero si el ID y la contraseña están enmascarados, eso proporcionará una seguridad adicional. – Bob

+2

@Bob Hay maneras de descifrar cada tipo de seguridad, desafortunadamente es la naturaleza de las cosas, no se puede crear ningún sistema que no se pueda romper. Es probable que las personas necesiten programas pagos para resolver el proyecto VBA y, por lo tanto, es poco probable que se molesten. –

Respuesta

11

Su opción más segura - independientemente de si el usuario tiene que escribir una contraseña o no - es para proteger todo el código de macro

  • Introduzca el Editor de Visual Basic (VBE)
  • seleccione el proyecto que desea proteger en la ventana Explorador de proyectos
  • Cliick en ese momento .... Propiedades VBAProject
  • clic en la ficha Protección y luego marque "Bloquear proyecto de visualización" y verificar la contraseña
  • Guarde su guía, cerrarlo y volver a abrirlo para establecer la protección

corto de escribir un complemento COM esto es seguro como su código obtendrá. Te aviso de que hay productos disponibles que grieta código VBA

enter image description here

+1

+1 Bien explicado. –

+0

+1 buena explicación – SWa

+1

Buena respuesta como siempre :) (+1 para el décimo vórtice para obtener la insignia de bronce). Sin embargo, podemos señalar este hilo: http://stackoverflow.com/questions/259897/how-password-protection-of-excel-vba-code-works que describe cómo la seguridad de VBA es pobre – JMax

2
Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56" 

Aarrgghh !! ¿Qué estás pensando?

Aquí está el acuerdo. Ninguna cantidad de encriptación lo ayudará aquí porque, si Excel mismo puede descifrar los datos (y puede, de lo contrario, la conexión nunca podría realizarse), entonces un tipo malicioso también puede hacerlo.

La forma correcta de hacer esto es pedirle al usuario el ID de usuario y la contraseña, y usar esa información para construir dinámicamente la cadena de conexión.

De esta forma, la información confidencial solo existe en la cabeza del usuario y (temporalmente) en la máquina que está utilizando (que probablemente sea su máquina). No está en una hoja de cálculo de Excel en un lugar al que cualquiera pueda acceder.

Y, además de eso, las identificaciones funcionales (compartidas entre diferentes usuarios) son casi siempre una mala idea ya que hacen que la auditoría sea una pesadilla.

Cuestiones relacionadas