Avatar of rreiss60
rreiss60Flag for United States of America asked on

trigger Word macro by pressing space bar (only). Don't want to use ctrl, F key, etc.

I have a search and replace macro that I recorded in Word.  To integrate it into the work flow, I'd like to trigger it by a press on the space bar without having to use the ctrl key, etc.  That way, if there is a replacement to be done, it will happen as I type rather than having to interrupt my typing to press a special key combination.

I know about autotext.  I don't like it.  My macro is also for inserting blocks of text as well as individual words.  It's easier to organize what I am doing with the VBA code rather than mix up my text replacement with all the autotext prefab stuff.

This feature would be used on my work computer which is locked down by IT and doesn't allow me to install .exe files.  But I can work within the Office VBA environment.  Or maybe Office applications can use another scripting or programming technique.
Microsoft ApplicationsMicrosoft Word

Avatar of undefined
Last Comment
rreiss60

8/22/2022 - Mon
Paul Sauvé

If you use only the "space bar" as a macro shortcut, how do you intend to insert a space in your document? Every time you press the space bar, the macro will execute!
GrahamSkan

Shortcut keystrokes have to begin with Alt or Ctrl, so you could run a macro from some such combination. Not a space, though.

I have looked at the extra events that can be used by creating a WithEvents application object, but the closest is SelectionChange, which is not triggered when typing in characters.
ASKER
rreiss60

I figure that if there is no text to replace, the macro may execute but there is no visible effect since the find part of the macro doesn't find anything.  I just go on typing.
 
I found this code, but instead of Alt + 0, what would I put in for spacebar?

' \\ Code for Module1
Option Explicit
 
Sub AddKeyBinding()
    With Application
         ' \\ Do customization in THIS document
        .CustomizationContext = ThisDocument
         
         ' \\ Add keybinding to this document Shorcut: Alt+0
        .KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyAlt, wdKey0), _
        KeyCategory:=wdKeyCategoryCommand, _
        Command:="TestKeybinding"
    End With
End Sub



 ' \\ Code for Module2
Option Explicit
 
 ' \\ Test sub for keybinding
Sub TestKeybinding()
    MsgBox "We have a winner", vbInformation, "Succes"
End Sub

My find and replace function would go in module 2.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
ASKER
rreiss60

wdKeySpacebar is the answer.

Now I will put in my find and replace in module 2 instead of the msgbox.
ASKER
rreiss60

Oops.  Need to disable keybinding after text replacement to restore normal spacebar function.  Any help appreciated.
ASKER CERTIFIED SOLUTION
rreiss60

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER
rreiss60

expert comments didn't lead to successful resolution. I was able to come up with a portion of the answer I needed. Would have liked someone to follow up on what I started.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.