NOTE: For the un-Microsoft-initiated, you can make use of this even if you don't "have a copy" of Visual Basic. VB (actually a special flavor called VBA, "Visual Basic for Applications") is the scripting language for Microsoft Office. It's built in. If you have Word, you have it, so fear not.
Since a good deal of E2 users seem to do their noding in Microsoft
Word, or at least drop their nodes in there to use the spellchecker,
I thought I'd offer up this little utility. This is a Visual Basic macro
that inserts hardlinks in Word. Simply place the cursor inside a word
you want to hardlink, or select multiple words (you can do this by double-clicking-and-dragging
or Ctrl-Shift-ArrowKey), and then execute the macro. (I assign it to Alt-[
but use whatever works for you and your keyboard.) Whatever you selected
gets automagically enclosed in hardlink brackets.
I have found this to be a huge timesaver
for lengthy writeups. I typically
type out a whole node, then insert the html
and hardlinks last. A macro
bound to a key is a tremendously speedy
way of hardlinking. As a special
, observe that the last two lines of the subroutine
the action is
, and nothing says that they can't surround your selection
of choice with, e.g., <p> and </p> or <i> and </i>.
Make a few flavors of this function bound to different keys, and you can
italicize and paragraph-ize with ease
If you need instructions putting a macro into Word, they are at the
bottom. Happy hardlinking.
'Macro to add hard link brackets around a word or selection
'Select current word the cursor is in,
'if there is currently no selection
If Selection.Range.Start = Selection.Range.End Then
Selection.MoveLeft Unit:=wdWord, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
'Eliminate blank spaces at end of selection, if any
'(Word pads selections with spaces after the word automatically)
While Selection.Range.Characters.Last = " "
Selection.SetRange Start:=Selection.Range.Start, _
End:=Selection.Range.End - 1
'Finally, insert the hardlink brackets
Whatever you think about VB/VBA (and I'm not a raging fan, mind you), you gotta admit that the above is fairly compact, readable and powerful as things go. Office is much better with it than without (and it's a lifesaver in Excel). If Microsoft's documentation didn't totally suck ass it would even be easy to figure out how to do things like this. Most of the time I have to wander blindly through the object hierarchy until I trip over what I need. Sigh. But it works!
Steps for inserting this as a Word macro (tested in Word 97 on Win NT4, your mileage may vary):
- Navigate down the menu: Tools, Macro, Record New Macro. Give your
macro a meaningful name, like "AddHardLinkBrackets", and hit
the "Keyboard" button to bind it to a key.
- This will bring you to a "Customize Keyboard" screen. Now
you type the key combo you want to use to run the macro. I use Alt-[
because it's fast and not reserved by Word, but whatever makes you happy.
Hit the Assign button, and then the Close button.
- Now a teensy little recorder window pops up. Word is now taking down
what we do, but we're not going to record anything. We want to stop recording
immediately, so hit the square "stop recording" button.
- When you hit stop, Word will give you no feedback whatsoever. How typical.
But rest assured your macro has been created. Go back to menu Tools,
Macro, Macros (or just hit Alt-F8) and find your new macro in the list.
Select it from the list, and hit the Edit button.
- Now you will be catapulted into the VB edit environment. You should
have a macro in front of you that looks something like this (the single-quote
lines are comments):
' AddHardLinkBrackets Macro
' Macro recorded 09/20/00 by sockpuppet
- Good. Now delete that entirely and paste in the big program at
the beginning of the node.
- You are done! Flip back to Word, give it a go, and start hardlinking
up a storm. If you've accepted all the defaults along the way other than
what is outlined above, the macro will get stored in your "template"
doc and be available whenever you use Word.
Exercise for the reader: it's also easy to see how a version
of this could be created to deal with plurals, ie: transform the
word "heuristics" into [heuristic|heuristics] for purposes of plural-safe
hardlinking. You wouldn't want to use it everywhere, of course, since
lots of words end in 's' which are not plural. But it could be handy.