Ir al contenido principal

Entradas

Mostrando entradas de julio, 2010

leer las computadoras de nuestros usuarios

Nuestro proyectos en Excel pueden contener simples tablas con un par de funciones, o bien macros con cientos o miles de líneas de código. Si el caso es el segundo, lo cual generalmente nos habla de trabajos de mediana/alta complejidad, necesitaremos saber con que tipo de computadora estamos trabajando. Y esto nos será de suma utilidad para averiguar el usuario que está ejecutando nuestro proyecto, disco raíz, en que disco se encuentra instalado Excel o el Sistema Operativo , donde se guardan localmente los archivos, etc, etc. Todos los items anteriormente mencionados, y muchos otros (como la marca, modelo y arquitectura del microprocesador), el sistema operativo los guarda en las llamadas " Variables de Entorno " [+/-] Ver el resto / Ocultar Desde VBA tenemos, como no podría ser de otra forma, acceso a esas Variables de Entorno del SO, mediante la matriz Environ$ , reservada de VBA . Podrán apreciar en la imagen que sigue el código necesario para volcar a nuestra planilla

detectar cambios realizados en una celda

Un lector del blog, al cual le agradezco su entrada, me realiza la siguiente consulta: si el usuario realiza algún cambio en una celda cualquiera de la hoja, el necesita saber en que fila de la planilla de cálculos se encuentra dicha celda, para seleccionarla completamente. Con funciones resulta imposible alterar la estructura de una hoja, por ende seleccionar, eliminar, agregar, etc, filas, así que no nos queda otra opción que recurrir a las macros. En realidad estamos ante una tarea que VBA ya tiene prevista e incorpora dentro de los eventos de cada hoja: Change (Cambio) . Nos vamos al editor de Visual Basic ( Alt + F11 ) y desde el Explorador de proyectos hacemos doble click sobre el nodo de alguna Hoja , y seleccionamos segun muestra la siguiente imagen: [+/-] Ver el resto / Ocultar En la imagen observamos que el procedimiento tiene un arguento: Target , del tipo Range . Y ese argumento no es otra cosa que la celda o rango en donde se produjo el cambio. Vamos a un ejemplo muy s

buscar un valor dentro de una matriz bidimensional

Vamos a resolver este planteamiento de dos formas: con y sin macros . La duda planteada se resuelve de forma muy sencilla con una función matricial, la cual recorre uno a uno los elementos de la matriz verificando la existencia de un valor determinado. Ingreso en E1 en valor en cuestión, para luego colocar la siguiente función: {=O(Matrix=$E$1)} recordemos que al ser matricial, debemos presionar Ctrol + Shift + Enter al momento de ingresarla. La función O() devuelve verdadero ó falso, según el resultado. [+/-] Ver el resto / Ocultar Así las cosas, todo fácil. El tema es que mi lector me solicita una función que especifique en que celda está el valor. Hasta ahora solamente hemos determinado su existencia, pero para llegar a lo requerido queda un largo camino. Empecemos. Si bien, como digo siempre, en el tema de programación existen muchos caminos distintos, solo pude vislumbrar uno para ayudar a mi lector. Para hacer comprensible la f'órmula final, trabajaremos en un "pas

visualizar sparklines en excel 2003

Miriam: desde ya agradezco nuevamente las palabras que posteaste en mi página de Facebook . Sobre tu consulta: copié el complemento XLA en la ruta: F:\Program Files\Microsoft Office\Office11\OFFICE11\ADDINS\, en donde F:\ es el disco de instalación de mi sistema operativo. Luego de esto, fuí a Herramientas / Complementos / y activé la casilla de verificacion respectiva: [+/-] Ver el resto / Ocultar Salí de Excel e ingresé nuevamente. A partir de allí aparecen dos opciones: a) o bien visualizarás la barra de herramientas de las sparklines: O bien aparece la opción como un menú mas del aplicativo: Dicho menú es bastante amplio y contempla una gran cantidad de opciones: fijate que entre las ultimas opciones tenés: borrar todas las sparklines, redibujarlas y hasta remover esta herramienta. Si aún no visualizás nada, cerrá Excel y desde el Explorador de Windows andá hasta el directorio donde copiaste el XLA y borralo. Vas nuevamente a Excel / Herramientas / Complementos y destild

guardar hojas de un libro de excel con formato TXT

Bueno Analía, un par de días después escribo sobre el tema que me solicitaras en este post . Quería lograr un código un poco mas compacto, pero esto me generaba problemas entre las distintas versiones de Excel , así que unifiqué criterios y escribí algo que funciona sin importar la versión. La situación planteada era la siguiente: en un libro que posee aprox 40 hojas , nuestra macro se  debe encargar de ir hoja x hoja y guardarla con formato TXT , ya que Analía debe realizar esta tarea a mano, lo que le produce una gran pérdida de tiempo.   [+/-] Ver el resto / Ocultar La imagen de arriba muestra una tabla común y corriente , cuyo formato se repite en todas las hojas del libro. Igualmente, y como cada hoja se guardará en un archivo independiente, cada  una de las tablas podría tener un formato distinto, aunque desde ya visualicemos problemas a la hora de consolidar esos archivos . Resta solicitar al usuario que, de alguna forma, identifique las hojas a migrar . En mi ejemplo, a c

detectar numeros dentro de una cadena alfanumerica con macros

En la entrada anterior vimos la forma de extraer solo los caracteres numéricos de una cadena alfanumérica: por ejemplo, si tengo el código WERT 657 , hacer que funciones me devuelvan solamente WERT . Si revisan dicho post, verán una complicada anidación de funciones, y que realmente no resuelve todos los problemas que se nos pueden plantear. Pero dejesmolo ahí... el ejemplo en cuestión funciona para lo solicitado por mi lector. [+/-] Ver el resto / Ocultar El tema es que con una sencillísima UDF (funcion definida por el usuario) podemos desde VBA solucionar el mismo planteamiento, sin la necesidad de recurrir a complejas funciones matriciales y sus siempre presentes funciones anidadas. Entiendo que muchas veces algunas PC tienen el uso de macros restringido, pero si podemos hacer uso de ellas.... la tarea se nos aliviará enormemente. Nos vamos al Editor de Visual Basic (Alt + F11), menú Insertar / Módulo, y dentro de él escribimos el siguiente código: Function CaracteresAlfabeti

detectar numeros dentro de una cadena alfanumerica

Real, y afortunadamente , algunos de mis lectores ( lisa y llanamente ) me están haciendo romper la cabeza . Me plantearon algo que se resuelve muy fácilmente con Macros ... pero no... nada de macros en este caso. Tiene ser llevado a cabo con funciones. Antes de seguir, quiero dar las gracias por todos los mensajes, ya que me sacan la telaraña de mis, pocas ya, neuronas. Según el archivo adjunto que recibo en mi correo (que proviene de una direccion de mail con nombre y apellido (sin firmar), y por cuestiones de privacidad no publico) la cuestión es la siguiente: dentro de un local llevan códigos alfanuméricos de productos, por ejemplo abc345 . Y tenemos que extraer solamente la parte alfabética: abc. Y como hago para hacerle entender a Excel donde empiezan los números en una cadena alfanumérica? abc 345 [+/-] Ver el resto / Ocultar Bué, después de renegar un buen rato se me ocurrió una solución. Pero utiliza muchas funciones y, encima, matriciales, así que primero haré el " pas