Macros

Hola Nando, después de unos días vuelvo a cargar mis baterías y hacerte las siguientes preguntas.
1.- Tengo unos 50 archivo en Excel y deseo ponerlos contraseña a los 50...¿se podría hacer una macro que me permita colocar una clave para todos al mismo tiempo? Lógicamente que deben estar los libros abiertos.
2.- Yo tengo un pequeño programa que lo he "pirateado" de otras respuestas que tú mismo respondiste.. Se trata de un programa que busca un valor "x", yo lo agregué un cuadro de texto y dice "Valor Encontrado"... Quisiera al mismo tiempo que me muestre la celda del dato encontrado, el nombre de la hoja, y el nombre del libro.
3.- ¿Cuál es la fórmula exacta para calcular la edad de una persona, ya que la función =año(hoy()-año(Fecha_Nac) y =dias360(año(Fecha_Nac),año(hoy())), no me devuelve al edad exacta de la persona.
4.-¿Cómo puedo hacer un programa que me impida que al presionar las teclas Alt + CTRL + SUPR me aparezca la ventana "Cerrar Ventana".
Bueno no sigo pues no quisiera ser tan gravosa contigo... Navegando por las respuestas descubrí que eres Contador Público y que dominas el Inglés... Muy bien pues déjame felicitarte y desear lo mejor para ti...! Ah! Y otra cosita... Cuando resuelvas los programas de VBA usa variables es castellano.. Porque sucede aveces que me "mato" tratando de entenderpor ejemplo que hace "LCol" cuando simplemente era una variable.. Dios te bendiga y Feliz fin de semana.

1 Respuesta

Respuesta
1
Sí, estoy.
Pero si presionas para que responda rápidamente, haz preguntas más breves. Así podré resolverlas por parte y no tener que esperar a tener todas tus respuesta para poder cerrar la pregunta.
Pero, bueno, aquí vamos:
1.- Claves a varios archivos.
Coloca los archivos a proteger con clave en un mismo directorio (después podrás devolverlos a su carpeta original).
Abre un archivo nuevo (auxiliar) y en su Hoja1 coloca estos datos:
En la celda C7 el camino completo del directotio donde están los archivos.
En la celda C8 coloca "*.xls" (sin comillas)
En la celda C9 la contraseña que le quieres aplicar a esos archivos.
En el editor de visual basic, inserta un módulo nuevo y pega este código:
Sub PoneClave()
Dim MiCarpeta, MisArchivos As String
MiCarpeta = Trim(Sheets("Hoja1").Range("C7").Value) & IIf(Right(Trim(Sheets("Hoja1").Range("C6").Value), 1) = "\", "", "\")
MisArchivos = Trim(Sheets("Hoja1").Range("C8").Value)
MiClave = Trim(Sheets("Hoja1").Range("C9").Value)
With Application.FileSearch
.LookIn = MiCarpeta
.SearchSubFolders = True
.FileName = MisArchivos
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
' MsgBox "Se encontraron " & .FoundFiles.Count & " archivo(s) en " & Chr(10) & MiCarpeta
For i = 1 To .FoundFiles.Count
DirFile = .FoundFiles(i)
Workbooks.Open FileName:=DirFile, Password:=""
ThisWorkbook.SaveAs FileName:=DirFile, Password:=MiClave
ThisWorkbook.Close
Next i
Else
MsgBox "No se encontró ningún archivo " & MisArchivos & " en " & Chr(10) & MiCarpeta
End If
End With
End Sub
Cierra el editor y guarda este archivo auxiliar.
Luego ejecuta la macro "PoneClave" y abrirá cada archivo en ese directorio, lo grabará con la clave que informaste en C9 y luego lo cerrará (uno por uno).
2.- Hubiera sido mejor que pegues el código que mencionas aquí así sé cuál de todos los que hice (¿Ves? Esto también me toma tiempo para buscar a cuál te refieres)
Supongo que esta es la parte que te interesa:
Sub TUYO()
...
Set c = Selection.Find(Buscar)
If Not c Is Nothing Then
c.Select
MENSAJE = "Valor encontrado en la celda " & c.Address(False, False) & Chr(10) & " de la hoja " & ActiveSheet.Name & Chr(10) & "en el libro " & ThisWorkbook.Name
c.Interior.ColorIndex = 4
MsgBox MENSAJE
Exit For ' <- Cuando lo encuentra termina la búsqueda
End If
...
3.- PAra calcular la edad, te conviene usar la función SIFECHA que calcula la diferencia entre dos fechas:
Por ejemplo:
="La edad exacta es: "&SIFECHA(D34;HOY();"y")&" años, "&SIFECHA(D34;HOY();"ym")&" meses y "&SIFECHA(D34;HOY();"md")&" dias"
Prueba y dime si todo esto te funciona.
La última pregunta tuya no tiene solución (además que no es específica de MS Excel), pues estas teclas manejan el Monitor de Tareas y eso es privativo del sistema de Windows... (pero no mates al mensajero, simplememente, por que no te gustó la noticia que trajo... ;)
Bueno, niña, disculpa la demora pero tu pregunta no fue sencilla y estoy con mucho trabajo...
Un beso!
Fer
Hola Nando, sigo aquí a la espera de tu respuesta... ¿por fis...?
Hola Fernando.. ¿estás todavía en este sitio?...
Sólo en la respuesta 1 me arroja el siguiente error: "Imposible guardar un libro con el mimo nombre del libro..." y señala la siguiente línea de comandos:
ThisWorkbook.SaveAs FileName:=DirFile, Password:=MiClave
Las demás soluciones están OK. te pasaste Nando... ¿en cierta ocasión alguien preguntó a Valedor sobre la función SIFECHA y el respondió que era un desperfecto humano de los creadores de Excel?... bueno Nando gracias por las soluciones que me das y por lo generoso que es de tu parte soportarme.
OK, reemplaza las dos lineas que empiezan con "ThisWorkbook..." por estas dos:
ActiveWorkbook.SaveAs FileName:=DirFile, Password:=MiClave
ActiveWorkbook. Close
Debería funcionar OK.
---
Más allá del comentario de Valedor (a quien respeto y aprecio mucho), me gustaría saber si la función dada te resolvió el problema (asumo que sí, pues la probé antes de enviártela). Si así fuese SIFECHA habrá cumplido su cometido.
Tal vez se haya confundido, no sé.
En algún artículo leí que esta función es como un "prima alcóholica" de la familia de funciones: MS Excel sabe que tiene una existencia útil, la reconocerá si preguntas por ella, pero jamás la mencionará en una conversación "educada".
De hecho, aún estando en el paquete de análisis de datos (Analysis Toolpak) desde MS Excel 5.0 (!), recién fue documentada en el Help de MS Excel 2000...
De cualquier modo, espero que te haya sido útil.
Un beso!
Fer

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas