A diferencia de otros posts sobre Excel VBA en este no voy a escribir código. Lo que voy a hacer es hablarte de todos los problemas que vas a tener si haces macros para usuarios de Mac. Encontrarás que usar Mac para trabajo serio es como usar una bicicleta en una carrera de Fórmula 1. Todavía las bicicletas no fallan tanto, Excel en Mac sí, y mucho.
Passwords son un dolor de cabeza con Mac
Cuando trabajas en Windows, sabes que si cambiaste el password de tu máquina, eso servira para loguearte en la red de tu empresa. Cuando trabajas en Mac parece que tu ordenador y el servidor de la red deben estar sincronizados para que puedas siquiera acceder a tu escritorio. Encontrarás que esa falta de sincronización hará que gastes incontables horas en el departamento de IT simplemente para poder desbloquear to password. Por eso si te dicen que cambies tu password, lo aconsejable es que tengas al departamento de IT o a un servicio de soporte de Mac a la mano, o simplemente no podrás trabajar.
Crash To Desktop
Excel VBA para Mac es extremadamente inestable, al punto de que comandos normales, nada especial, que usabas en tus macros para PC, no sólo detienen la ejecución de tu macro, sino que hacen que Excel sufra una caída al escritorio (conocido como Crash To Desktop o CTD), o dicho de otra forma, estabas corriendo una macro normal y de pronto Excel ya no está abierto. Consejo sano, salva tu macro de vez en cuando para no perder el trabajo, y cuando vas a ejecutar la macro, prepárate por si ocurre un CTD. Un CTD es el bug más vergonzoso que puede suceder a cualquier software, y Excel lo sufre en Mac. Parece que en Microsoft no están haciendo un gran trabajo.
Una forma fácil de hacer inestable a Excel es tratar de exportar como xlsx una hoja de cálculo de Google Docs y tratar de usarla en Excel. Verás que se acelera el tiempo para obtener un CTD. Ademas Google Docs no usa fórmulas de Excel sino las suyas propias, por lo que habrá funciones de Google Docs que aparecerán con error. Y cada vez que la macro encuentre una celda con error va a dar un error y requerirá que tu macro atrape el error. Si necesitas atrapar errores, busca información sobre VBA error trapping. Y cuando tu macro esté tratando de cambiar valores de celdas con error, en algún punto Excel podría tener un CTD.
Si eres de los que se divierte mostrando al mundo las imperfecciónes del mundo de Microsoft, he aquí que con Mac hay mucho material para crear un espectáculo para avergonzar a los desarrolladores de Microsoft.
Sin forms
Sabemos que los formularios o forms son la interfaz gráfica que usas para capturar datos o para facilitar la labor al usuario. En Mac eso no existe. Acceder a las celdas de Excel para recoger datos para tu macro es una tarea muy costosa en términos de procesador, y en Mac es peor que en PC. De esta manera si vas a actualizar celdas o a leerlas, pásalas a memoria. Si vas a usar una lista, mejor crea un objeto que maneje esa lista. Mac es un dolor de cabeza.
El focus sobre los Sheet (Hoja) de Excel al cambiar de Workbook (Libro)
Para entender el problema vamos a tener dos libros de Excel, Book1 y Book2. Cada uno tendra dos hojas Sheet1 y Sheet2
- Imagina que tu macro está trabajando (tiene focus) sobre Sheet2 en el libro Book1.
- Si tu macro se pasa de Book1 a Book2 y luego de vuelta a Book1, esperarías que la macro siga trabajando sobre Sheet2, pero en Mac no funciona así.
- Si te pasas de vuelta a Book1, la macro se pasará a la hoja que está a la izquierda, que en este caso es Sheet1.
- En otras palabras, corres el riesgo de trabajar sobre la hoja incorrecta.
- Eso significa que cada vez que cambies de Workbook, debes agregar código para que busque el Sheet correcto.
El focus al terminar la ejecución de una macro
Si creías que era incómodo el focus durante la ejecución de la macro, al terminar la ejecución es otro dolor de cabeza. Excel te muestra un Workbook, pero no te deja usarlo, de modo que es como si se hubiese bloqueado Excel. Pero no, lo que ocurre es que la edición sí está habilitada para otro Workbook, y debes acceder a él manualmente para desbloquearlo. Como esa es una tarea que el usuario debe realizar, va a resultar muy molesto para el usuario.
Y si creías que al menos Excel iba a mostrar el último Workbook al que le diste focus, te equivocas de nuevo. Tu macro regresó al Workbook que debe mostrar al terminar de ejecutar, pero a veces eso no es lo que Excel muestra. Puede ser que muestre otro Workbook. Como miramos, Microsoft le ha lucido para Mac y hace que el personaje de lindo pulgoso parezca limpio y sin pulgas.
Acción no solicitada al usar command + flecha
Cuando estas editando a mano los libros de Excel y maximizas las ventanas, puedes usar Command + flecha para moverte. Pero Excel tiene la mala maña de devolverse de vez en cuando, especialmente cuando te bloquea la edición y tratas de pasarte al Workbook que tiene desbloqueada la edición. Es un completo fastidio.
Accion no solicitada de cambiar tamaño y reubicar ventana del IDE de VBA
Cuando el beta testing se deja de hacer por pereza, ocurre esto. Maximizas la ventana de IDE y luego te cambias de modulo o tratas de partir en dos la ventana de codigo o viceversa, y sin que tu lo solicites, Excel te devuelve al tamaño anterior y mueve tu ventana como estaba. Es una pesadilla cuando quieres editar código. Encima de todo al maximizar no puedes usar CTRL flecha, sino que lo que hace es cambiar el tamaño siempre sobre el escritorio.
Pesadilla al lidiar con visibilidad de ventanas del IDE
Quieres acoplar la ventana de un modulo al IDE? Puedes hacerlo, pero no desacoplar. Y con facilidad encontrarás que a veces logras tener ventanas mal acopladas, cuya barra superior desaparece, pero la esquina inferior derecha debe moverse a mano. Empiezas manualmente a cambiar el tamaño de ventana del IDE que no te deja ver. Si tienes dos monitores con resoluciones distintas, la pesadilla sube de nivel.
Problemas de permisos con Save As
Y si creías que todo esto era un fastidio, deberías tratar de salvar el archivo que estás trabajando. El tema de conseguir rutas para salvar libros de Excel, y los permisos de Mac para salvar te van a sacar las canas.
De este modo si un usuario tiene Mac:
- El usuario está atrapado en el infierno de IT si quiere editar su password
- El usuario tendrá que batallar contra Excel cuando quiera acceder al libro abierto correcto usando Command + Flecha y deberá resolver el misterio de cual es el libro de Excel que es editable y que no está bloqueado.
- La macro que funcionaba en Mac, no le va a funcionar en PC.
- El usuario recibirá una macro que no va a terminar en el libro que debe terminar y deberá pasarse manualmente.
- Si el programador no resuelve el problema de rutas y permisos en Mac, la macro deberá desplegar una ventana emergente con el comando msgbox indicando el nombre del archivo con el que debe salvar. A diferencia de las ventanas de mensajes de Windows, el texto de las ventanas de Mac tienen su texto seleccionable por el usuario.
El bucle infernal
Cuando realizas tareas de insertar filas, si llegas a hacer suficientes en poco tiempo, Excel entrará en un bucle del cual no puedes salir. No será culpa tuya, sino de alguna pulga de software. No hay nada como mirar la máquina Mac que se supone que es más estable que una PC, atrapada en un error de software.
Acciones que no se graban
Encontrarás que las macros de Excel para Mac están en una etapa anterior a 2013. Si tratas de cambiar os colores de una celda, o realizar otras tareas, encontrarás que Excel no graba el código de esos pasos que realizaste. Si quieres grabar deberás usar PC.
Corolario
La moraleja de esta historia es que Mac apesta para trabajo serio. Y Excel VBA no podría hacer aterrizar una cápsula Apolo en la luna sin estrellarla. Es un dolor de cabeza para IT, para el usuario y para el programador de macros. Si puedes, evita Mac. Y si no tienes como evitarlo, tendrás que revisar todo el código de tu macro y hacer pruebas, porque si no, seguramente no vas a tener usuarios contentos.