Macr para insertar contraseñas

4 envíos / 0 nuevos
Último envío
pituxi
Imagen de pituxi
Offline
última acción: Hace 13 años 5 meses
alta: 09/01/2010 - 14:05
Puntos: 165
Macr para insertar contraseñas

Mensualmente he de generar 50 infomes que corresponden a otras tantas personas. Cada uno de de los libros esta protegido con una contraseña. En el poceso de construcción de los archivos he de abrirlos 2 veces, convirtiendose en una tarea muy tediosa y fuente de errores al introducir las contraseñas manualmente.

¿Sería posible la creación de una macro que abriese los libros introduciendo las contraseñas?

salu2 y muchas gracias

pacomegia
Imagen de pacomegia
Online
última acción: Hace 6 mins 16 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Macro para insertar contraseñas

Sí se puede.

para abrir un libro utilizarías WorkBooks.Open que tiene varios argumentos, como la ruta del archivo que quieres abrir, si quieres abrirlo como sólo lectura, y también puedes indicarle la contraseña, tanto la de apertura, que es el argumento Password, como la de escritura si es diferente, con el argumento WriteResPassword.

Lo que ocurre es que necesitarás tener una lista con los archivos y las contraseñas, y esto puede ser algo "inseguro", que no sé si puede llegar a ser un problema en tu caso. aunque puede que ya exista ese listado de contraseñas y sea el que utilizas para introducirlas a mano ¿no?

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.

pituxi
Imagen de pituxi
Offline
última acción: Hace 13 años 5 meses
alta: 09/01/2010 - 14:05
Puntos: 165
Re: Macro para insertar contraseñas

Efectivamente, el listado de contraseñas está en papel y con él en la mano voy introduciendo, una a una, las contraseñas de apertura. Había pensado en proteger el libro de las contraseñas con contraseña, lo que creo es mas seguro que el sistema que ahora utilizo.

He de decir, en esto de las Macros estoy en fase iniciatica, por lo que me resulta dificil lo mas sencillo. No sé como vincular el libro de las contraseñas con la apertura de los libros a traves de la macro. Es decir, con la grabadora activada, abro el libro de las contraseñas y comienzo a abrir los libros protegidos, pero me pide la contraseña y ahí me paro. Se me ocurre introducir la clave, pero eso no funciona.

salu2 y muchas gracias

 

 

 

Before Elvis there was nothig

Before Elvis there was nothig

pacomegia
Imagen de pacomegia
Online
última acción: Hace 6 mins 16 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
vamos con un ejemplo

Si te parece, lo vemos con un ejemplo.

Vamos a preparar una macro en el libro de las contraseñas, para que vaya recorriendo la lista de nombres de archivos.

El proceso sería algo así como:

para cada archivo
  abrir un archivo
    ejecutar los pasos que necesites
  cerrar el archivo
siguiente

Ahora se trataría de crear este bucle, y esto es algo que no hace el grabador de macros. Con el grabador de macros sí puedes grabar los pasos que quieres dar con el libro ya abierto, e incluso abrir y cerrar el archivo, aunque luego tendrías que retocar ese código grabado.

supongamos que tenemos nuestra lista de archivos y contraseñas de esta manera (recuerda que el nombre del archivo tiene que tener la ruta completa, así que o pones la ruta en la celda, o si todos están en la misma ubicación puedes emplear una celda para especificar la ruta y luego componer la cadena completa):

nuestra lista de datos

A mí me gusta poner nombres a los rangos para luego referirme a ellos más cómodamente, aunque esto tampoco es necesario. también me gusta convertirlo en una tabla por si más adelante se añaden nuevos elementos, pero esto también es optativo (aunque te ahorra algunos quebraderos de cabeza)

pues vamos a preparar el esqueleto del bucle, para ello recorreremos las celdas con la lista de los nombres (yo he llamado ListaNombres a la primera columna de esta tabla). ¿y cómo se hace este bucle? pues muy sencillo, empleando FOR EACH. Entra en el editor de visual basic y empezamos:

Sub AbrirTodosArchivosLista()
    Const Lista = "ListaNombres" ' utilizo una constante para el nombre de la lista
    Dim celda As Range   ' esta es la variable contador para el bucle
    
    For Each celda In Range(Lista).Cells
    ' este bucle recorre la lista de nombres

    Next
   
End Sub

Ahora lo que tenemos que hacer es abrir el archivo para cada celda. Para ello utilizaremos Workbooks.Open, teniendo en cuenta que el nombre del archivo está en la celda, y la contraseña está en la celda que se encuentra a su derecha (para esto emplearemos Offset)

Luego damos los pasos que queramos con el archivo abierto, para este ejemplo mostramos un mensaje, aquí podrías poner tu macro grabada.

por último cerramos el libro que acabamos de abrir, con el argumento SaveChanges igual a True, para guardar los cambios.

Ten en cuenta que cuando abres un libro, éste se convierte en el libro activo; si con tu macro cambias el libro activo, tendrías que tener cuidado con esto.

Así que nuestra macro quedaría algo así:

Sub AbrirTodosArchivosLista()
    Const Lista = "ListaNombres"
    Dim celda As Range
   
    For Each celda In Range(Lista).Cells
        Workbooks.Open celda.Value, , , , celda.Offset(0, 1).Value
            MsgBox "Ahora que está el libro abierto, hacemos lo que queramos"
            'aquí irían tus instrucciones para cada libro abierto
           
        ActiveWorkbook.Close True
    Next
   
End Sub
 

Espero que te sirva de ayuda. Ya me dirás...

------
Ya sé Excel, pero necesito más

 

------
Ya sé Excel, pero necesito más.