I want to make a macro that will do the following:
Highlight every nth selection.
Check that selection to ensure it is a word (and not numerical or punctuation).
Cut the word and paste it into another document.
Replace the word with a blank space.
Repeat until the end of the document.
The hard part is checking a selection to validate that it is indeed a word and not something else.
I found some code written by someone else that might work, but I don’t understand how to implement it in my macro with the rest of the commands:
Function IsLetter(strValue As String) As Boolean Dim intPos As Integer For intPos = 1 To Len(strValue) Select Case Asc(Mid(strValue, intPos, 1)) Case 65 To 90, 97 To 122 IsLetter = True Case Else IsLetter = False Exit For End Select Next End Function Sub Blank() Dim OriginalStory As Document Set OriginalStory = ActiveDocument Dim WordListDoc As Document Set WordListDoc = Application.Documents.Add Windows(OriginalStory).Activate sPrompt = "How many spaces would you like between each removed word?" sTitle = "Choose Blank Interval" sDefault = "8" sInterval = InputBox(sPrompt, sTitle, sDefault) Selection.HomeKey Unit:=wdStory Do Until Selection.Bookmarks.Exists("EndOfDoc") = True Selection.MoveRight Unit:=wdWord, Count:=sInterval, Extend:=wdMove Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend If IsLetter = True Then Selection.Cut Selection.TypeText Text:="__________ " Windows(WordListDoc).Activate Selection.PasteAndFormat (wdFormatOriginalFormatting) Selection.TypeParagraph Windows(OriginalStory).Activate Else Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdMove Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend Loop Loop End Sub
The function should sit ‘above’ the rest of the code right? But I get an error ‘argument not optional’ when I run it.
Any ideas or tips much appreciated.
Source: Stack Overflow