macros

VBA en Excel para Mac: cómo activarlo y empezar

octubre 20, 2026 Tuto Excel 15 min read
VBA en Excel para Mac: cómo activarlo y empezar

Si tienes Excel para Mac y has visto un tutorial de macros con la etiqueta VBA, este artículo es para ti. VBA (Visual Basic para Applications) es el lenguaje de programación que lleva Excel dentro y que permite automatizar tareas con macros. En Mac funciona, pero hay partes que se comportan de forma distinta al PC: algunos controles y objetos de Windows no existen, y ciertas macros fallan al abrirlas en el otro sistema. Al terminar, sabrás activar la pestaña Programador, abrir el editor, escribir tu primera macro y dejarla lista para que funcione tanto en Mac como en Windows. Lo que aquí se explica sirve para Excel para Microsoft 365, Excel 2024, Excel 2021 y Excel 2019 en Mac.

Qué es VBA en Mac y por qué tu código de Windows puede no funcionar ahí

VBA es el motor de macros que Excel lleva integrado desde los años noventa. Existe en Excel para Mac y en Excel para Windows, y la mayoría del lenguaje se comporta igual en los dos sistemas: las mismas instrucciones (Sub, End Sub, Dim, For, If), el mismo modelo de objetos (Workbook, Worksheet, Range, Cells) y los mismos UserForms.

La diferencia está en lo que VBA usa para «hablar» con el sistema operativo. En Windows, VBA puede cargar objetos COM (ActiveX), llamar a librerías DLL y leer el registro. En Mac, VBA no tiene acceso a ninguna de esas tres cosas: macOS las bloquea porque Excel corre dentro de un entorno protegido (sandbox). El caso típico: copias un .xlsm desde un PC con una macro que usa CreateObject("WScript.Shell") y, al abrirlo en Mac, VBA lanza el error 429 «ActiveX component can't create object». La macro no está mal escrita; es que la pieza que pide no existe en Mac.

Lo que tienes delante: la pestaña Programador y el editor de Visual Basic

En Mac, la pestaña Programador viene oculta por defecto. El camino para mostrarla es algo distinto al de Windows: en Mac se hace desde el menú Excel, no desde Archivo.

Activar Programador y abrir el editor por primera vez

  1. Abre Excel para Mac y ve al menú Excel (no Archivo) y elige Preferencias.
  2. En la ventana de Preferencias, pulsa Cinta y barra de herramientas.
  3. En la lista de la derecha, marca la casilla Programador.
  4. Cierra Preferencias. La pestaña Programador aparece a la derecha de Vista.
  5. Pulsa Opt+F11 (en Windows sería Alt+F11) para abrir el editor de Visual Basic. También puedes ir a Programador > Código > Editor de Visual Basic.

Al abrirlo verás una ventana con el Explorador de proyectos a la izquierda (muestra los libros abiertos y sus hojas) y una zona grande a la derecha en blanco: ahí se escriben las macros.

Nota: Si tu Excel está en español con configuración de Windows (separador de argumentos con coma), el Alt+F11 de los atajos del PC no se aplica. En Mac el atajo de teclado es Opt+F11, y dentro del editor F5 ejecuta la macro y F8 la ejecuta paso a paso.

Insertar un módulo y escribir tu primer Sub

  1. En el editor, ve al menú Insertar y elige Módulo.
  2. En la zona en blanco escribe este código:

Sub Hola()
    Range("A1").Value = "Hola"
    MsgBox "Listo"
End Sub
  1. Pulsa F5. Vuelve a la hoja de Excel y verás la celda A1 con el texto «Hola», y antes un cuadro con el mensaje «Listo».
Comprueba: La celda A1 muestra «Hola» y aparece un MsgBox con el botón Aceptar. Si solo ves el MsgBox, vuelve a la hoja y comprueba la celda A1.

Lo que VBA en Mac hace igual que en Windows

El corazón de VBA es el modelo de objetos, y esa parte es idéntica en los dos sistemas. Sirve la jerarquía: Application (Excel) contiene Workbooks (libros), cada libro contiene Worksheets (hojas), y cada hoja tiene Range (rangos) y Cells (celdas sueltas). Los UserForms, los eventos de hoja (Worksheet_SelectionChange, Workbook_Open) y los cuadros MsgBox e InputBox funcionan igual.

En este artículo vamos a usar el libro Ventas: una hoja con productos, precio y cantidad, donde VBA calcula el total por fila.

A1fx**Producto**
A B C D
1 Producto Precio Cantidad Total
2 Lapiz 1,50 10
3 Cuaderno 3,20 5
4 Goma 0,80 12
Ventas

Mover datos con Range, Cells, .Value y .FormulaLocal

Con .Value escribes o lees el valor de una celda. Con .FormulaLocal escribes una fórmula en el idioma del usuario (español, con punto y coma). En Mac las dos funcionan.

D2fx=B2*C2
A B C D
1 Producto Precio Cantidad Total
2 Lapiz 1,50 10 15,00
3 Cuaderno 3,20 5 16,00
4 Goma 0,80 12 9,60
D2 Arrastra el controlador de relleno hasta D4
Ventas

La macro equivalente, escrita con Cells(fila, columna):

Sub CalcularTotales()
    Dim i As Long
    For i = 2 To 4
        Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
    Next i
End Sub

Y la versión con fórmula, usando .FormulaLocal para que la fórmula quede en español y con punto y coma:

Sub PonerFormula()
    Range("E2").FormulaLocal = "=SUMA(A2:D2)"
    Range("E3").FormulaLocal = "=SUMA(A3:D3)"
    Range("E4").FormulaLocal = "=SUMA(A4:D4)"
End Sub
Nota: En Excel con punto decimal (México, Estados Unidos), el separador de argumentos es la coma y el separador de filas se escribe con punto: Range("E2").FormulaLocal = "=SUMA(A2:D2)" se convierte en =SUM(A2:D2) solo en .Formula; .FormulaLocal se adapta al idioma.
Cuidado: Si usas .Formula en vez de .FormulaLocal, tienes que escribir la fórmula en inglés y con coma: Range("E2").Formula = "=SUM(A2:D2)". Escribir =SUMA(...) en .Formula da el error 1004 en tiempo de ejecución.

Lo que VBA en Mac no puede hacer y te dará error

Hay una lista corta de cosas que VBA en Windows hace y VBA en Mac no. No es un fallo de tu código, es que macOS no expone esas piezas a Excel.

Función de VBA en Windows Qué pasa en Mac Motivo
Controles ActiveX en hojas El menú Insertar no los muestra macOS no aloja controles ActiveX dentro de Excel
CreateObject("WScript.Shell") Error 429 «ActiveX component can't create object» No hay objetos COM en el sandbox de macOS
Declare Function ... Lib "kernel32" Error de compilación No hay DLLs de Windows
Acceder al registro con SaveSetting / GetSetting La función existe pero no encuentra el registro El registro de Windows no existe en macOS
Application.InputBox(Type:=8) para un rango Devuelve una cadena, no un rango La captura de rango con ratón no funciona en Mac

Controles ActiveX: por qué el menú Insertar de Mac no los tiene

En el editor de VBA, el menú Insertar ofrece dos cosas distintas: UserForm y Módulo. Los controles ActiveX (botones, cuadros de texto, listas) solo aparecen al diseñar un UserForm, y aun así en Mac aparecen los «controles de formulario», no los ActiveX. Si abres un libro hecho en Windows con un botón ActiveX en una hoja, el botón se ve como una imagen estática: no se puede pulsar ni se le puede asignar una macro.

Mac no tiene COM, registro ni DLLs de Windows

macOS aísla cada aplicación en un entorno cerrado (sandbox). Excel para Mac no puede cargar componentes COM, no puede abrir una DLL de Windows y no puede escribir ni leer el registro del sistema porque ese concepto no existe. Las llamadas equivalentes en Mac pasan por AppleScript o por comandos bash lanzados con Shell, que sí funcionan, pero no son objetos COM. Por eso CreateObject("WScript.Shell") devuelve el error 429: VBA no encuentra la pieza que le pides.

Escribir VBA que valga en Mac y en Windows a la vez

La buena noticia es que casi todo tu código VBA habitual funciona en Mac sin tocarlo. La excepción son los dos puntos anteriores. Para esos casos, VBA trae una compilación condicional con Mac que te permite escribir dos versiones del mismo bloque: una para Mac, otra para Windows.

La macro con el bloque #If Mac Then…#Else

Esta macro lee la columna A de la hoja Ventas, junta los productos en un texto y lo guarda en un archivo .txt junto al libro. La ruta se construye con Application.PathSeparator, que vale para ambos sistemas.

Sub GuardarListado()
    Dim ruta As String
    Dim i As Long
    Dim contenido As String
    Dim archivo As Integer
    
    contenido = ""
    For i = 2 To 4
        contenido = contenido & Cells(i, 1).Value & ";" & _
                    Cells(i, 2).Value & ";" & _
                    Cells(i, 3).Value & Chr(10)
    Next i
    
    #If Mac Then
        ruta = Application.DefaultFilePath & Application.PathSeparator & "listado.txt"
    #Else
        ruta = ThisWorkbook.Path & Application.PathSeparator & "listado.txt"
    #End If
    
    archivo = FreeFile
    Open ruta For Output As #archivo
    Print #archivo, contenido
    Close #archivo
    
    MsgBox "Guardado en: " & ruta
End Sub
Cuidado: En Mac, ThisWorkbook.Path devuelve la ruta del libro solo si está guardado como .xlsm en una carpeta local. Si abres el archivo desde OneDrive o desde una carpeta sincronizada, puede llegar vacía. Por eso en Mac se usa Application.DefaultFilePath, que apunta a la carpeta Documentos.

Sustituir ActiveX por controles de formulario

En vez de insertar un botón ActiveX, usa un control de formulario, que sí funciona en Mac y en Windows.

  1. En la hoja Ventas, ve a Programador > Controles > Insertar.
  2. Elige el primer icono de la fila inferior: Botón (control de formulario).
  3. Dibuja el botón en la celda F1.
  4. Al soltar, aparece el cuadro Asignar macro; elige GuardarListado y pulsa Aceptar.
ProgramadorControlesInsertar
Comprueba: Al pulsar el botón aparece el MsgBox con la ruta del .txt. Abre esa carpeta y comprueba que el archivo listado.txt contiene los tres productos separados por ;.

Crear un UserForm en Mac cuando el menú no te deja

En el editor de VBA para Mac, el menú Insertar > UserForm no aparece en todas las versiones. Está disponible desde Excel 16.53 para Mac (lanzada en 2020), que equivale a Excel 2021 en Windows. Si tu versión es anterior, el menú Insertar solo ofrece Módulo y Procedimiento. La solución es crear el UserForm por código, con CreateObject, después de marcar dos referencias concretas en el editor.

Las dos referencias que tienes que marcar

  1. En el editor de VBA, ve al menú Tools y elige References.
  2. Marca Microsoft Forms 2.0 Object Library.
  3. Marca Microsoft Visual Basic for Applications Extensibility 5.3.
  4. Pulsa Aceptar y vuelve al módulo.

El código mínimo para crear el UserForm por código

Esta macro crea un formulario con un cuadro de texto y un botón Aceptar, lo muestra y, al cerrarlo, escribe lo que escribió el usuario en la celda G1.

Sub CrearFormulario()
    Dim frm As Object
    Set frm = CreateObject("Forms.Form.1")
    
    frm.Caption = "Venta rápida"
    frm.Width = 200
    frm.Height = 120
    
    Dim txt As Object
    Set txt = frm.Controls.Add("Forms.TextBox.1")
    txt.Name = "txtProducto"
    txt.Left = 10
    txt.Top = 10
    txt.Width = 150
    
    Dim btn As Object
    Set btn = frm.Controls.Add("Forms.CommandButton.1")
    btn.Name = "btnAceptar"
    btn.Caption = "Aceptar"
    btn.Left = 10
    btn.Top = 50
    btn.Width = 80
    
    frm.Show
    
    Range("G1").Value = frm.Controls("txtProducto").Value
    Unload frm
End Sub
Comprueba: Al ejecutar CrearFormulario se abre una ventana con el título «Venta rápida», un cuadro de texto y un botón Aceptar. Al escribir algo y cerrar, la celda G1 contiene ese texto.

Por qué el editor te borra espacios y se come letras al escribir

Un fallo muy común en Mac: al escribir código en el editor de VBA, los espacios desaparecen o las letras se borran solas al pulsar Entrar o al volver a una línea. El editor de VBA de Mac tiene un corrector en tiempo de ejecución que entra en conflicto con ciertas configuraciones.

La causa más habitual, según la documentación de Microsoft, es que el archivo .xlsm está abierto desde una carpeta sincronizada en la nube (OneDrive, iCloud Drive, Dropbox, Google Drive). El editor y el cliente de sincronización escriben a la vez y se pisan. La solución es descargar el archivo al disco local.

Cuando OneDrive es el culpable: descarga el .xlsm al Mac

  1. Cierra el libro en Excel y cierra el editor de VBA.
  2. En Finder, ve a la carpeta de OneDrive donde está el archivo.
  3. Clic derecho sobre el archivo .xlsm y elige Descargar de OneDrive (la opción exacta puede variar según la versión del cliente; también puede aparecer como Mantener siempre en este dispositivo).
  4. Abre la copia local desde Finder (doble clic) y vuelve al editor de VBA.
  5. Escribe código de prueba y comprueba que los espacios se mantienen.

Si el problema no es OneDrive: limpia la barra y repara el disco

  • En el editor, ve a Ver > Barras de herramientas y desmarca Herramientas de VBA si está activada; esta barra colisiona con algunos atajos del editor en Mac.
  • En Herramientas > Opciones > Editor, desactiva la casilla Comprobación automática de sintaxis para evitar que el editor reformatee tu código al pulsar Entrar.
  • Si sigue fallando, abre Utilidad de Discos (Aplicaciones > Utilidades), selecciona tu disco y pulsa Primeros auxilios. Un disco con errores de escritura puede provocar que el editor pierda caracteres.
Cuidado: Desactivar la comprobación automática de sintaxis no apaga la detección de errores al ejecutar, solo el subrayado en tiempo real. Sigue viendo los errores cuando pulsa F5.

Guardar y abrir tu libro con macros en Mac

Un libro con macros se guarda con la extensión .xlsm (Libro de Excel habilitado para macros). Si lo guardas como .xlsx, Excel borra las macros sin avisarte.

  1. Ve a Archivo > Guardar como.
  2. En el formato, elige Libro de Excel habilitado para macros (.xlsm).
  3. Escribe el nombre y pulsa Guardar.

Para abrirlo después, doble clic desde Finder. Si Excel lo abre en vista protegida, pulsa Habilitar contenido en la franja amarilla de arriba: las macros de un archivo descargado de internet se bloquean hasta que lo habilitas manualmente.

Nota: Excel para la web (Excel online, en el navegador) NO ejecuta macros VBA. Si subes el .xlsm a OneDrive y lo abres desde el navegador, las macros no se ejecutan. Solo las ejecuta el escritorio de Mac o de Windows.

Lo que ya sabes hacer con VBA en Mac y tu siguiente paso

  • Ya activas la pestaña Programador desde Excel > Preferencias > Cinta y barra de herramientas.
  • Ya abres el editor con Opt+F11 y ejecutas macros con F5.
  • Ya escribes fórmulas en español con punto y coma usando .FormulaLocal, y entiendes que .Formula exige inglés y coma.
  • Ya sabes que ActiveX, COM, DLLs y el registro de Windows no existen en Mac, y que .InputBox Type:=8 falla.
  • Ya escribes código compatible con Mac y Windows usando el bloque #If Mac Then … #Else … #End If.
  • Ya creas un UserForm por código cuando el menú Insertar no te lo ofrece.

Siguiente paso: prueba tu .xlsm en Windows. La forma más fiable es abrirlo en una máquina virtual con Parallels o VMware Fusion que tenga Excel 2021 o 2024 instalado, o pedirle a un compañero con PC que ejecute la macro y te confirme el resultado. Si funciona en los dos, tu código es portable.

Dudas al usar VBA en Excel para Mac

1. ¿Cuál es el atajo para abrir VBA en Excel para Mac?

En Mac no existe un atajo directo de teclado para abrir el editor de VBA, así que tienes que ir a Programador > Editor de Visual Basic o usar el menú Desarrollador. La pestaña Programador viene oculta por defecto y se activa en Excel > Preferencias > Barra de herramientas y cinta > Pestaña Programador.

2. ¿Cómo abro el editor de VBA en Excel para Mac?

Primero activa la pestaña Programador en Excel > Preferencias > Barras y cinta, márcala y acepta. Después, dentro de la hoja, pulsa Programador > Editor de Visual Basic y se abrirá la ventana con el Explorador de proyectos a la izquierda, lista para escribir macros.

3. ¿Puedo usar el editor de VBA de Mac también en PowerPoint?

Sí, el editor de VBA está disponible en PowerPoint para Mac con la misma mecánica: activa la pestaña Programador en PowerPoint > Preferencias > Barras y cinta, pulsa Programador > Editor de Visual Basic y trabajarás con proyectos VBA del archivo de PowerPoint abierto.

4. ¿Cómo activo la pestaña Programador en Excel para Mac?

Abre Excel, ve al menú Excel > Preferencias y entra en Barras y cinta. En la lista de la derecha, marca Programador, pulsa Guardar y ciérralo. La pestaña aparecerá a la derecha de la cinta, con los botones Visual Basic, Macros y Grabar macro.

5. ¿Cómo inserto código VBA en un libro de Excel?

Abre el editor con Programador > Visual Basic, en el Explorador de proyectos haz doble clic en el módulo donde quieras pegarlo (Módulo1 si acabas de crear uno con Insertar > Módulo) y pega el código entre Sub y End Sub. Para ejecutarlo, vuelve a Excel y pulsa Programador > Macros > Ejecutar.

6. ¿Cómo se abre VBA en Excel?

En Windows, pulsa Alt+F11 o ve a Programador > Visual Basic. En Mac, como el atajo Alt+F11 no funciona, tienes que activar antes la pestaña Programador en Excel > Preferencias > Barras y cinta y luego abrir el editor desde Programador > Visual Basic.

7. ¿Cómo empiezo a usar VBA en Excel?

Empieza activando la pestaña Programador, graba una macro sencilla con Programador > Grabar macro y observa el código que se genera en Módulo1; ese código es la mejor forma de aprender la sintaxis. A partir de ahí, edítalo en el editor y prueba paso a paso con F8 para ejecutarlo línea a línea.

Fuentes

  1. MicrosoftVBA forms and coding for the MAC in Excel – Microsoft Learnconsultado el 06/10/2026
  2. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 06/10/2026
  3. MicrosoftExcel para Mac — documentación oficialconsultado el 06/10/2026
  4. MicrosoftLAMBDA — documentación oficialconsultado el 06/10/2026
  5. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 06/10/2026