Hola fejoal, ¿Qué macro tengo que hacer para que cuando abras un libro de excel por primera vez te pida unos datos personales como nombre, dirección, etc...? Solo quiero que salga la primera vez que la abras. Las siguientes veces se supone que se queda "en memoria". Gracias de antemano David.
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Supondré que existe un archivo que siempre tiene los datos que mencionas en blanco. Por ejemplo, usando un archivo plantilla (o template) que luego se graba con otro nombre. Este archivo inicial, buscará en alguna celda que le indiques la presencia de caracteres en ella. Si estuviera en blanco, solicitará que sean completados. Caso contrario, obviamente, no preguntará nada. Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja que dice "ThisWorkbook" (o "EsteLibro" según la versión") Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic: Private Sub Workbook_Open() 'David: Completa estos datos con los de tu archivo Hojadata = "Hoja2" Celda_Nombre = "B2" 'Celda donde alojará el nombre Celda_Direcc = "B3" 'Celda donde alojará la Dirección Celda_etc = "B4" 'Celda donde alojará etc... '---------------------------- gracias Set Hojadata = Sheets(Hojadata) If IsEmpty(Hojadata.Range(Celda_Nombre)) Then For ton = 1 To 4 Beep ' LLamado atención acústico Next ton Do D_Nombre = InputBox("Por favor, ingrese su nombre:", "COMPLETE DATOS PERSONALES") Loop While Len(D_Nombre) = 0 'obliga a ingresar dato en este inputbox Do D_Dir = InputBox("Por favor, ingrese su dirección:", "COMPLETE DATOS PERSONALES") Loop While Len(D_Dir) = 0 'obliga a ingresar dato en este inputbox Do D_etc = InputBox("Por favor, ingrese su etc:", "COMPLETE DATOS PERSONALES") Loop While Len(D_etc) = 0 'obliga a ingresar dato en este inputbox '... Hojadata.Range(Celda_Nombre).Value = D_Nombre Hojadata.Range(Celda_Direcc).Value = D_Dir Hojadata.Range(Celda_etc).Value = D_etc End If Set Hojadata = Nothing End Sub Completa los datos indicados al inicio del código, relativos a la ubicación de los datos a solicitar y, eventualmente, agrega variables para otros que no figuran allí. Cierra el Editor de Visual Basic y graba el archivo. Como verás la macro está preparada para recibir tres datos, pero creo que entenderás la idea y podrás adaptarla a tu caso. La macro revisa en la hoja que le indiques si existen datos o no. En el caso de la archivo de plantilla original siempre estará en blanco toda vez que al intentar grabarla, esta debe recomendar que se grabe con otro nombre. En cambio si el archivo que se llama, fuese uno grabado como xls, con otro nombre, al encontrar datos en aquellas celdas, la macro no será ejecutada. Independientemente de tu estrategia para la generación de un archivo nuevo, cada vez que se abra este archivo, tal control de existencia será llevado a cabo. En el caso de que no encuentre datos, aparece una sucesión de Inputbox que le solicitan al usuario/a que complete cada dato. Notarás que cada uno de ellos está encerrado en un ciclo (loop) Do-while que obliga a que la caja de texto se complete. Desde luego puedes eliminarle este control, si así lo deseas. Alojados los datos en cada variable, son volcadas luegos a las direcciones que le indicaste originalmente. - Ingresa al sitio www.porloschicos.com y, si quieres, presiona el botón de donación (es gratis). Confío en que lo harás.