top of page

Giving Macros a Try

In my brief  Intro to Macros, you will find some simple explanations and detailed steps to try using macros. The link also contains some excellent resources for learning more about the power of macros in MS Word. For simpler macros than the ones in the PDF, try the two style sheet macros below!

Revised, simple style-sheet macro

This macro selects your current window, and after it copies the term to your style sheet, it switches back to that original window. So you only have to change "Style Sheet" as the hard-coded part, but can run the same macro from any file.

Use the following macro to copy whatever text you have selected in one file, paste it into your style sheet, and return to the file you were working on. Remember, only copy the "filling" of the macro sandwich. Don't copy the "bread" (the "Sub Style_Sheet()" or the "End Sub" lines) when creating your macro.

​

Sub Style_Sheet()

' Style_Sheet Macro
' Adds selected term to style sheet and returns to original file.
    Dim currentWindow As Window
    Set currentWindow = ActiveDocument.ActiveWindow
    Selection.Copy
    Windows("Style Sheet").Activate
    Selection.EndKey Unit:=wdStory
    Selection.TypeParagraph
    Selection.Paste
    currentWindow.Activate
   
End Sub

 


​

Revised, simple macro for pasting inverted name into style sheet

This simple macro, adapted for me by my colleague Noah Haibach, enables you to copy a personal name (e.g., Chris Smith) from one file, paste it inverted (Smith, Chris) into your style sheet, and return to the file you were working on. Remember, only copy the "filling" of the macro sandwich. Don't copy the "bread" (the "Sub_InvertNameToStyle()" or the "End Sub" lines) when creating your macro.

​

Sub InvertNameToStyle()

' Inserts name in style sheet and inverts it.
' Style sheet filename must be "Style Sheet" (w/out quotes)
  
    Dim currentWindow As Window
    Set currentWindow = ActiveDocument.ActiveWindow
   
    Dim currentName As String
    currentName = Selection.Text
    ' Remove both line feeds and carriage returns (in Windows can be both)
    currentName = Replace(currentName, vbLf, "")
    currentName = Replace(currentName, vbCr, "")
    currentName = Trim(currentName)
   
    Dim currentNameLen As Integer
    currentNameLen = Len(currentName)
   
    Dim spacePosition As Integer
    spacePosition = InStrRev(currentName, " ")
   
    Dim formattedName As String
    ' Right gives us the number of characters from the right side; last name
    ' Left gives us the number of characters from the left; first (and middle)
    ' We subtract one from Left side to remove the space between the names
    formattedName = Right(currentName, currentNameLen - spacePosition) _
       & ", " & Left(currentName, spacePosition - 1)
       
   
    Windows("Style Sheet").Activate
    Selection.EndKey Unit:=wdStory
   
    Selection.TypeParagraph
    Selection.TypeText (formattedName)
   
    currentWindow.Activate
End Sub

 


​

bottom of page