A Microsoft no le gusta VBA en Microsoft Office, y le gustaría deshacerse de él (nunca estoy muy seguro de por qué). Ahora están en su segundo bocado de esta cereza (indigerible). Los dos bites son:

Bite Notas
Visual Studio Tools for Office VSTO se presentó hace unos años, y con orgullo anunciamos un curso en él, creyendo que esto eventualmente permitiría a las personas desarrollar aplicaciones basadas en Microsoft Office. Nunca recibimos una sola consulta sobre este curso, y nunca se ha ejecutado.
JavaScript para Office Office-js se ha ido mejorando gradualmente en los últimos años. El gran punto de venta es que mientras que VBA solo funciona para Microsoft Office en Windows o Mac, JavaScript funcionará para versiones de Excel que se ejecutan en la web, su teléfono o su tableta.

Entonces, ¿qué es lo que no le gusta de JavaScript para Office? Muchos, según parece. Este blog enumera 3 razones realmente buenas para no molestarse en aprender JavaScript para Office a menos que sea absolutamente necesario.

En aras de la divulgación completa, puedo ver una razón por la que es posible que desee aprender JavaScript para MS Office: es compatible con OneNote, lo que no es VBA.

Razón 1: Gastos generales de configuración e implementación

¿Desea escribir un programa en VBA dentro de Excel? Aquí están las instrucciones:

  1. Abrir Excel.
  2. Pulse Alt + F11.
  3. Iniciar codificación.
  4. Ejecute sus macros para probarlas pulsando F5.
  5. Guarde su libro de trabajo como un archivo habilitado para macros.
  6. ¡Envíalo al mundo!

¿Desea desarrollar en JavaScript para MS Office? Aquí están las instrucciones (simplificadas):

Lo que necesitará Notas
Un entorno de desarrollo Si es un desarrollador de Microsoft, tiene sentido usar Visual Studio como IDE (Entorno de desarrollo integrado). La edición de la Comunidad está disponible de forma gratuita, aunque tendrás que obtener la bendición de tu departamento de TI para instalarla.
Nodo.js Puede usar JavaScript o el lenguaje TypeScript de Microsoft para crear sus complementos de Office, pero para ambos necesitará instalar este marco de archivos que le permita crear sus programas.
Generador Yeoman Esto es un poco como un asistente, lo que le permite crear complementos de Office más fácilmente.

Así que traté de hacer esto. Terminé teniendo que ejecutar un programa desde mi línea de comandos, que generó montones de mensajes antes de finalmente colgarlos.

Incluso cuando tienes lo anterior instalado, todavía tienes un largo camino por recorrer, como muestra esta mal llamada guía de inicio MicrosoftQuick. Y no me hagas empezar a empaquetar tus aplicaciones terminadas e implementarlas …

Razón 2-El lenguaje es más difícil

He estado programando en VBA durante casi 30 años (!), y en C# y JavaScript para más de 5. Pero prefiero mucho la interfaz de tipo VB, y he escrito un artículo sobre Simple-Talkto este efecto (hasta la fecha, esto ha tenido 460,000 vistas y 2,700 comentarios, ¡la mayoría críticos!).

Hay dos razones por las que te resultará más difícil programar en JavaScript que en VBA:

  1. Es menos parecido al inglés.
  2. No puede grabar macros de JavaScript en Excel o Word, como puede hacerlo con VBA.

Si eres un desarrollador experimentado, hay mucho que encontrar en cuanto a VBA, como se resume en este artículo, pero la gran mayoría de los usuarios de VBA nunca necesitarán saber qué clases, delegados y funciones lambda son.Razón 3: JavaScript es asíncrono, pero VBA se interpreta

Para simplificar:

  • Cuando le dices a VBA que haga A y B, espera hasta que A se complete antes de comenzar a hacer B.
  • Cuando le dices a JavaScript que haga A y B, envía solicitudes (se llaman promesas), para que A y B puedan ejecutarse en paralelo.

¿Seguramente entonces el método JavaScript es mejor?

Tareas de programa

Debido a que el método JavaScript ejecuta tareas en paralelo, terminará más rápidamente que el equivalente de VBA.

Pero … intenta hacer un pastel con este método. Las instrucciones básicas son:

  1. Crema de mantequilla/margarina y azúcar.
  2. Mezcle los huevos.
  3. Mezcle la harina y el polvo de hornear.
  4. Hornear.
  5. Decorar y servir.

Ahora imagine la versión JavaScript de esto, en la que todas las tareas comienzan al mismo tiempo, y no hay que esperar a que una tarea termine antes de que comience la siguiente. Si tienes suerte, obtendrás esto:

Pastel malo

Disculpas si esta fue tu foto que tomé de Google Images. Espero que el cumpleaños haya ido bien. Siendo realistas, sin embargo, no obtendremos nada tan reconocible como un pastel de nuestro proceso.

Casi todas las macro que escribe en Excel requieren que los pasos se realicen en un orden determinado. Un algoritmo típico podría ser:

  1. Ir a la última celda no en blanco de una columna.
  2. Copie su valor.
  3. Péguelo en la celda debajo de él.

Para escribir este tipo de cosas en JavaScript, vas a tener que seguir comprobando que se ha cumplido una promesa antes de solicitar la siguiente (aunque para este sencillo ejemplo podrías combinar las tres instrucciones en una sola rutina).

Llevo aproximadamente 5 veces más tiempo codificando en JavaScript para sitios web que en C#. Hay algunas razones para esto, pero la principal son los errores introducidos cuando asumo que el proceso A ha terminado cuando en realidad todavía se está ejecutando.

Así que, a menos que ya sea un desarrollador web de JavaScript o TypeScript a tiempo completo, mi consejo sería ignorar Office-js hasta que Microsoft apague VBA, lo que no veo que suceda en la próxima década.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.