Desea ejecutar una macro de Word presionando una sola tecla de función como F8 o F11 sin mantener presionado Ctrl, Alt o Shift. De forma predeterminada, el cuadro de diálogo Personalizar teclado de Word requiere que presione una combinación de teclas que incluya al menos una tecla modificadora. Esta limitación significa que no puede asignar directamente una macro a una tecla de función sin modificar a través de la interfaz de usuario estándar. Este artículo explica el método alternativo usando el Organizador para copiar una macro en una plantilla y luego editar el archivo Normal.dotm con un procedimiento VBA simple para vincular la macro a una tecla de función sin modificador. Aprenderá los pasos exactos para lograrlo sin herramientas de terceros.
Puntos clave: Asignar una macro a una tecla de función sin modificadores
- Limitación del cuadro de diálogo Personalizar teclado: Word requiere presionar una combinación de teclas con Ctrl, Alt o Shift al asignar atajos a través de Archivo > Opciones > Personalizar cinta de opciones > Atajos de teclado. Las teclas de función sin modificador no se aceptan.
- Solución alternativa con VBA usando Application.OnKey: El método OnKey en el Editor de Visual Basic puede vincular una macro a una sola tecla como F9 o F11, evitando la restricción del cuadro de diálogo.
- Macro AutoOpen en Normal.dotm: Coloque una asignación OnKey dentro de una macro AutoOpen en la plantilla Normal para que el vínculo esté activo cada vez que Word se inicie.
Por qué Word no puede asignar una macro a una tecla de función sin modificador a través de la interfaz de usuario
El cuadro de diálogo Personalizar teclado de Word está diseñado para aceptar combinaciones de teclas que incluyan al menos una tecla modificadora: Ctrl, Alt o Shift. Cuando presiona una tecla de función como F8 sola, el cuadro de diálogo la registra como un atajo no válido y no permite confirmar la asignación. Este comportamiento es intencional para evitar la sobrescritura accidental de atajos integrados de Word como F7 para Ortografía y gramática o F12 para Guardar como.
Sin embargo, el sistema subyacente de mensajes de teclado de Windows sí admite la vinculación de macros a teclas de función sin modificar. El entorno VBA de Word expone el método Application.OnKey, que puede capturar cualquier pulsación de tecla, incluidas las teclas de función independientes. El método OnKey ejecuta una macro especificada cuando se presiona una tecla en particular, independientemente de la limitación del cuadro de diálogo. Este método es la única forma integrada de asignar una macro a una tecla de función sin modificador en Word.
Antes de continuar, asegúrese de que su macro esté almacenada en una plantilla que se cargue al iniciar, normalmente Normal.dotm. Las macros almacenadas en un solo documento solo funcionarán cuando ese documento esté activo. Para una asignación global que funcione en cualquier documento, la macro debe residir en Normal.dotm u otra plantilla global cargada a través de Archivo > Opciones > Complementos.
Pasos para vincular una macro a una tecla de función sin modificadores usando VBA
Los siguientes pasos utilizan el Editor de Visual Basic para crear una macro AutoOpen en Normal.dotm que asigna su macro personalizada a una tecla de función específica. Word ejecutará esta macro AutoOpen cada vez que se inicie, estableciendo el vínculo de tecla.
- Abra el Editor de Visual Basic
Presione Alt+F11 para abrir el editor de VBA. Si el Explorador de proyectos no está visible, presione Ctrl+R para mostrarlo. - Localice el proyecto de la plantilla Normal
En el Explorador de proyectos, expanda el nodo llamado “Normal” (Normal.dotm). Si no lo ve, es posible que deba mostrarlo haciendo clic en Ver > Explorador de proyectos. - Inserte un módulo para la macro AutoOpen
Haga clic con el botón derecho en “Normal” y elija Insertar > Módulo. Aparece un nuevo módulo llamado “Module1”. Haga doble clic en él para abrir la ventana de código. - Escriba la macro AutoOpen
Pegue el siguiente código en el módulo:Sub AutoOpen()
Application.OnKey Key:="{F8}", Procedure:="MyMacro"
End SubReemplace “{F8}” con la tecla de función que desea usar. Los códigos de tecla válidos son {F1} a {F12}. Reemplace “MyMacro” con el nombre exacto de su macro. Si su macro está en un módulo diferente, incluya la ruta completa del módulo: “ModuleName.MacroName”.
- Escriba la macro que se ejecuta cuando se presiona la tecla
En el mismo módulo o en uno diferente, cree la subrutina de macro que realiza el trabajo. Por ejemplo:Sub MyMacro()
MsgBox "You pressed F8"
End SubGuarde el archivo presionando Ctrl+S o haciendo clic en el icono de guardar.
- Cierre Word y vuelva a abrirlo
Salga de Word por completo y luego inicie Word de nuevo. La macro AutoOpen se ejecuta automáticamente, vinculando la tecla de función a su macro. - Pruebe el vínculo de tecla
Presione la tecla de función que asignó. Su macro debería ejecutarse. Si no sucede nada, verifique que el nombre de la macro en la línea OnKey coincida exactamente y que la macro esté almacenada en Normal.dotm.
La macro AutoOpen debe colocarse en el proyecto “Normal”. Si la coloca en un proyecto específico de un documento, el vínculo de tecla solo funcionará cuando ese documento esté activo. Para un vínculo a nivel del sistema, la plantilla Normal.dotm es la ubicación correcta.
Si el vínculo de la tecla de función no funciona
La macro no se ejecuta cuando presiono la tecla de función asignada
Primero, verifique que la macro AutoOpen se ejecute al iniciar. Abra Word, presione Alt+F11 y compruebe que el módulo que contiene AutoOpen exista en Normal. Si falta el módulo, es posible que haya guardado la macro en una plantilla o documento diferente. Vuelva a crear el módulo en el proyecto Normal.
Segundo, asegúrese de que el código de tecla en el método OnKey coincida exactamente con la tecla de función. Para F9, use “{F9}”. Para F11, use “{F11}”. No incluya espacios ni caracteres adicionales. El código de tecla debe estar entre llaves.
Tercero, verifique que el nombre de su macro esté escrito correctamente. Si la macro está en un módulo diferente, antepóngale el nombre del módulo: “Module1.MyMacro”. Si la macro contiene un error, Word puede mostrar un error en tiempo de ejecución o fallar silenciosamente. Pruebe la macro ejecutándola manualmente desde el cuadro de diálogo Macros (Alt+F8) para confirmar que funciona.
Se ejecuta otra función de Word en lugar de mi macro
Algunas teclas de función tienen comandos integrados de Word. Por ejemplo, F7 abre el panel Ortografía y F12 abre el cuadro de diálogo Guardar como. Cuando usa Application.OnKey para asignar una macro a dicha tecla, su macro anula el comportamiento integrado solo mientras la macro está activa. Si desea restaurar la función original, llame al comando original dentro de su macro. Por ejemplo, para restaurar la función de ortografía de F7 después de que se ejecute su macro, puede incluir Application.OnKey Key:="{F7}" al final de su macro para restablecerla, o llamar al comando integrado usando Application.CommandBars.ExecuteMso "Spelling".
El vínculo de tecla deja de funcionar después de cerrar y volver a abrir un documento
Esto ocurre cuando la macro AutoOpen está almacenada en un documento en lugar de en Normal.dotm. La macro AutoOpen a nivel de documento se ejecuta solo cuando se abre ese documento específico. Cuando abre un documento diferente, se pierde el vínculo. Mueva la macro AutoOpen al proyecto Normal para que sea persistente en todos los documentos.
Asignación OnKey vs cuadro de diálogo Personalizar teclado: diferencias clave
| Elemento | Método OnKey (VBA) | Cuadro de diálogo Personalizar teclado (UI) |
|---|---|---|
| Tecla de función sin modificador | Compatible | No compatible |
| Requiere conocimientos de VBA | Sí | No |
| Persistencia después de reiniciar | Requiere AutoOpen en Normal.dotm | Automática al guardar en Normal.dotm |
| Puede anular atajos integrados | Sí | Sí, pero solo con modificador |
| Alcance del vínculo | Global si está en Normal.dotm | Global si se guarda en Normal.dotm |
Ahora puede asignar cualquier macro a una tecla de función sin modificador usando el método Application.OnKey en VBA. Comience colocando la macro en Normal.dotm, luego escriba una macro AutoOpen que llame a OnKey con el código de tecla deseado. Si necesita asignar varias teclas de función, agregue varias líneas OnKey dentro del mismo procedimiento AutoOpen. Para eliminar un vínculo, establezca el argumento Procedure en una cadena vacía: Application.OnKey Key:="{F8}". Esto restablece la tecla a su comportamiento predeterminado.