Entradas

Ordenación por selección en VBA/Excel

Imagen
En un post anterior a este vimos cómo aplicar el algoritmo de ordenación por el método de la burbuja para ordenar un Array en memoria, en esta ocasión veremos otra alternativa usando el algoritmo de ordenación por selección.
En una ordenación por selección, se selecciona elemento con el menor valor y se intercambia con el primer elemento, después con los restantes n-1 elementos, se obtiene el siguiente elemento con menor valor y se intercambia con el segundo y así sucesivamente hasta llegar a los dos últimos elementos.
Por ejemplo, si el método de selección fuera utilizado en el Array “bdac”,  cada paso se vería de la siguiente manera:
inicial      bdac paso 1    adbc paso 2    abdc paso 3    abcd

El número de comparaciones en la ordenación de la burbuja y en la ordenación por selección es el mismo, pero el número de intercambios en el caso medio es bastante menor en la ordenación por selección, por lo tanto aplicar este algoritmo puede ser mucho más rápido que aplicar el algoritmo de ordena…

Ordenación de la burbuja en VBA/Excel

Imagen
La ordenación más conocida (y la más infame) es la ordenación por el método de la burbuja, Su popularidad deriva de su nombre pegadizo y su simplicidad. Sin embargo, es una de las peores ordenaciones jamás concebida.
Esta ordenación hace comparaciones repetidas y si es necesario, intercambios de elementos adyacentes. Su nombre viene por la similitud del método con las burbujas en un tanque de agua, donde cada burbuja busca su propio nivel.

Option Explicit Sub Burbuja() Dim cont As Long Dim a As Long, b As Long Dim t As Long Dim items As Variant Dim oTimer As New clsTimer items = Application.Transpose(Range("A1").CurrentRegion.Value) oTimer.StartTimer cont = UBound(items) For a = 1 To cont For b = cont To a + 1 Step -1 If items(b) < items(b - 1) Then t = items(b - 1) items(b - 1) = items(b) items(b) = t End If Next Next MsgBox oTimer.GetElapsedTime(Seconds) Range("C1").Resize(10000, 1).Value = Application.Transpose(items) End Su…

Envió de mensajes de WhatsApp a través de Excel

Imagen
Actualmente millones de personas utilizan WhatsApp como medio de comunicación a pesar de haber otras opciones como Telegram la cual considero que tiene mas características (sobre todo de seguridad), pero que lamentablemente no es tan conocida como WhatsApp.

WhatsApp es muy popular y si lo pensamos bien puede ser una magnifica herramienta para notificaciones, marketing. Imaginemos poder utilizar WhatsApp para enviar notificaciones personalizada a una fuerza de ventas o promociones a nuestros principales clientes. Lo malo es que desde el móvil, enviar 100, uno personalizado a cada cliente se vuelve algo sumamente tedioso, pero si pudiéramos enviar mensajes personalizados a cada uno de ellos desde Excel la tarea sería mucho mas fácil, automatizada y personalizada.

Navegando por Internet encontré esta planilla que efectivamente envía mensajes de WhatsApp utilizando Excel, les comparto el link:
WhatsApp: cómo enviar chats personalizados en lote con Excel gratis (vídeo+plantilla)

Para poder…

Eliminar libro al cumplirse una fecha por medio de VBA

Imagen
Una vez un amigo y colega mío me dijo:
-“Estoy a punto de salirme de trabajar y como desarrolle algunas macros que no me pagaron entonces les puse un candado para que dentro de dos meses dejen de funcionar…”


La idea no era mala, el se iba, dejaba las macros funcionando y semanas después de su partida las macros dejaban de funcionar, el pequeño inconveniente es que los archivos que contenían las macros se quedaban en las manos de su cliente y existen varias formas para acceder al código contenido en el libro. Una mejor estrategia hubiese sido que cada vez que se abriera el libro se verificara la fecha y dependiendo de la validación se eliminara el libro con todo y macros.
El siguiente código, muestra cómo eliminar el libro activo si la fecha del sistema es igual o posterior a una fecha especificada, dicho código va en el evento Open del libro.
NOTA: El libro eliminado no va a la papelera de reciclaje. Se elimina permanentemente.
Private Sub Workbook_Open()
Dim fecha As Date
Dim wb As …

Encendido de un LED desde VBA/Excel

Imagen
En mis estudios universitarios me tocó cursar la materia de Robótica, la cual fue sumamente interesante ya que tuve investigar como programar los puertos y algo de electrónica…
Para el curso opte por comprar un adaptador USB/RS-232 y un convertidor RS-232 de macho a hembra para facilitar las conexiones.
Me decide por el RS-232 ya que es mas fácil de programar, ademas que anteriormente había comprado un adaptador de USB/Paralelo y mi NetBook no lo detecto como puerto.
En mis investigaciones encontré varias alternativas para poder prender un LED. Es decir utilizar la PC como un control de encendido y apagado, ya que si podemos prender un simple led, también podremos prender y apagar cualquier equipo electrónico (lamparas, licuadoras, etc…). Pero por ahora solo veremos como manipular el encendido y apagado de un LED.
Hay varias maneras para esto: Usar la API de WindowsUsar el control NetComm que reemplaza al control Comm brindado por VBHacer uso del manejo de archivos (la cual es sumamen…

Abrir archivos desde una macro

Imagen
En algunas situaciones al tener una macro que deba abrir un archivo desde cierta ubicación de nuestro equipo o unidad de red para poder procesarlo o leer información del mismo, muchos de los que van empezando con la programación de macros suelen tener en su código algo similar a esto:
Sub AbrirArchivo()
Dim libro As Workbook
Set libro = Workbooks.Open("C:\Users\Luis Antonio\Documents\WebScraping.xlsm")
' Código para extraer o procesar información del libro...
End Sub
Este código anterior es directo, pero tiene una desventaja, el nombre del archivo esta incrustado dentro del código. Si se deseará abrir  un archivo distinto tendría que cambiarse el código algo nada práctico y eficiente.
Sub AbrirArchivo2()
Dim libro As Workbook
Dim ruta As String
ruta = ThisWorkbook.Sheets("Setup").Range("A1")
Set libro = Workbooks.Open("C:\Users\Luis Antonio\Documents\WebScraping.xlsm")
' Código para extraer o procesar información del libro...
End Sub
Es…

Seleccionar y Procesar Celdas Especiales en Excel - Pte 2

Imagen
Este post es el complemento del anterior: Seleccionar y Procesar Celdas Especiales en Excel.
En esta segunda entrega les comparto un vídeo práctico en el cual aplico el uso de filtros y selección de celdas especiales con la herramienta de “Ir a Especial” para poder procesar un listados de datos. 
Se trata de un ejemplo real en el cual se puede apreciar que dominando las herramientas antes mencionadas se pueden depurar extensas listas de datos sin hacer uso de macros al igual que aplicando estas mismas se pueden programar macros eficientes para el procesamiento automático.