Ir al contenido principal

Entradas

Mostrando entradas de julio, 2011

como evitar que eludan nuestras macros

A lo largo de distintas entradas hemos visto muchas formas de proteger nuestros proyectos, tengan estos o no macros, evitando que los usuarios accedan a funciones, rutinas o datos reservados. Desde hace, aprox, un mes, recibí tres consultas que practicamente me dicen lo mismo: Excel siempre avisa que el libro contiene macros y si mi proyecto funciona en base a ellas ¿como puedo evitar que quien abra el archivo presione "no habilitar", dejando así inutilizado mi trabajo? el típico mensaje de Excel, alertando sobre la existencia de posibles (y reales) amenazas codificadas en VBA [+/-] Ver el resto / Ocultar Todos sabemos que desde el menú Herramientas/Macro/Seguridad podemos predefinir la forma en que la aplicación se comportará frente a un archivo con macros. Y sabemos también que lo mejor es tener un "nivel de seguridad medio", para así no bloquear o permitir cualquier cosa. Pero ese "nivel medio" nos remite a la primer imagen: si el usuario hace click s

obtener datos desde otro archivo de excel, con ADO

Ya hemos visto en repetidas oportunidades las consultas a fuentes de datos externas, con el objetivo de migrar hacia Excel registros que se encuentran almacenados fuera de dicha aplicación. Siempre la tarea se llevó a cabo mediante las opciones del menú "datos / obtener datos externos / " y sus respectivos items: Aprendimos que el origen de esos registros pueden provenir de tablas en la web, Access, otro archivo de Excel.... hasta la forma de conectarnos con Access "colgado" de un servidor . Para repasar algunos de estos concepto, pueden hacer click aquí , que los llevará a la sección "datos" del blog. [+/-] Ver el resto / Ocultar Pero existen otras formas de realizar esas conexiones, muy poderosas. Si bien para "hacerlas desde cero" será casi indispensable conocer sobre programación, un buen ejemplo nos evitará ese requisito, ya que luego será sencillo modificar el código y adaptarlo a nuestros proyectos. Y a eso apunto con esta entrada. En es

gracias, estimados lectores

Hace aproximadamente un mes que realmente poseo poco tiempo para dedicarle a mi blog. Entre el trabajo, las obligaciones familiares, contestar las consultas que llegan a mi correo, el estudio y otras tantas cosas (incluyendo la iPad 2 que me regaló Evelyn, mi esposa, que me está volviendo mas loco que de costumbre).... el día debería contar, por lo menos, con 72 hs. Pero lamentablemente sigue con sus avaras 24, que en realidad son 16, por que dormir... hay que dormir. Es una lástima dedicarle tanto tiempo a Morfeo, ya que hablamos de 1/3 del día, o sea el 33%. Si lo pensamos un poco mas y si llegamos a los 90 años (Dios quiera), descubriremos que 30 años nos la pasamos durmiendo. =SI(DUERMO_8_HS; DUERMO_1/3_DE_MI_VIDA; NO_VIVO) Analizando un poco el tercer argumento.... me quedo contento, aunque sigo pensando que son muchos años de "espaldas a lo que está pasando". [+/-] Ver el resto / Ocultar El blog superó las 50.000 visitas. Y me quedo sin palabras, por que nunca pensé qu

mostrar y ocultar series de un grafico

Luego de la entrada sobre el cambio de imágenes sin macros  y el manejo de rangos dinámicos a la hora de asignar datos a un gráfico ( aquí ), me llega una consulta mas que interesante: de que forma es posible mostrar u ocultar las series de un gráfico. La cuestión es mas sencilla de comprender si les muestro la siguiente imagen: Podemos observar en la imagen superior la evolución de un determinado producto a lo largo de 6 meses, para 5 continentes. Si... todo muy útil, pero... ¿no se torna un poco confuso observar tanta información "de golpe"? Y menos mal que son 5 continentes, por que si fuesen 10, la gráfica directamente sería ilegible. Entonces mi lector me pregunta ¿puedo mostrar "por partes" esa información, es decir, solamente América o Africa, o solamente Europa.... o Europa, América y Oceanía?  [+/-] Ver el resto / Ocultar Si, es totalmente posible y sin hacer uso de las macros. Para ello será buena idea que vean (o revean) esta entrada , en donde explico

cuestiones sobre formatos de celdas

Hace unas semanas un amigo del trabajo, de la hermosa ciudad de Mendoza (y gran programador también), se contactó conmigo para consultarme si había alguna forma de crear múltiples líneas dentro de una celda, sin utilizar la ya conocida manera de presionar "Alt + Enter". En pocas palabras, logar el mismo efecto, pero con funciones. Y no sé si puedo resolver esa cuestión del todo, pero indagando y practicando sobre este problema encontré cosas que no son muy conocidas y quisiera compartir con mis lectores. Mas o menos sabemos que si escribimos en dentro de una celda y presionamos "Alt + Entrar", creamos un reglón, un salto de línea, como muestro en la siguiente imagen: cada nueva línea dentro de la celda la conseguí mediante la combinación de "alt + enter" [+/-] Ver el resto / Ocultar Si quiero lograr eso con funciones...mmmm... todavía no llegué a ese punto. Pero "metiendo mano" hallé recuerdos olvidados en el arcón de Excel y otros aspectos que

controlar los datos que ingresan nuestros usuarios

En esta entrada, solo apta para "macreros", trataremos un tema que desvela a todos al momento de generar formularios, y la forma en que estos deben comportarse como capa entre "los dedos de nuestros usuarios" y los datos que debemos almacenar. VBA nos proporciona dos eventos muy poderosos y fáciles de usar, los cuales nos permitirán restringir la entrada de datos en, por ejemplo, un cuadro de texto: KeyPress y KeyDown . Imaginemos un escenario en donde requerimos que ingresen la edad o el número de documento de identidad: esos valores sí o sí tienen que ser numéricos ¿puedo anular todas las letras del teclado para evitar que algún caracter alfabético sea incorporado? Si, y con muy poco código. 0 1 2 3 4 5 6 7 8 9 [+/-] Ver el resto / Ocultar Para los que ya están familiarizados con la programación, sabrán que cualquier caracter alfanumérico es, para nuestro ordenador, un número. El signo arroba es el número 64, la "b" el 98, la \ (barra invertida) el 92 y

crear una tabla espejo, a modo de backup

Un lector interesado en resguardar bien las modificaciones que va sufriendo una tabla, me pregunta lo siguiente: ¿como hago para que cada vez que alguien modifique algún valor de la tabla me quede almacenado ese valor y el nuevo? Buena consulta, la cual resolveremos mediante Macros. Se me ocurrió la idea de "tabla espejo": en una hoja tengo los registros y en otra (exactamente igual a la primera) voy a ir guardando todos los cambios que se hagan en la primera. Es muy poco código y bien "entendible", así que nos encontramos ante una tarea de fácil implementación y muy útil para generar resguardos o controlar el cambio de valores a lo largo del tiempo. En el archivo que les dejo de ejemplo tenemos una hoja llamada "original", con la siguiente tabla: como podrán observar.... sigo con muy poca creatividad y ganas de trabajar a la hora de generar tablas. [+/-] Ver el resto / Ocultar Sigamos. Vamos a copiar esa tabla y a pegarla en otra hoja, a la cual llamarem