The following code has been adjusted to use that progress bar. It is neither necessary nor desirable to write a text string to the clipboard in order to write it to the document. As you will no doubt gathered I am a novice at VBA and this attempt was just trying to emulate what I would do manually.
You can download a userform to do this from my web site - Extract the files from the zip and import to the VBA project.
This can result in you not knowing whether the process is still running, but the easy answer to that is to use a progress indicator bar.
Screen Updating = True Exit Sub Err_Exit: Msg Box Err. Number End Sub If you don't want to have the flicker as the documents are opened, open the documents invisibly.
It appears that you want to locate the text "Discharge Pack" and insert a paragraph break after it and write the text to the start of that new paragraph. Execute(Find Text:=str Text To Find, Match Case:=True) rng To Search. Close Save Changes:=wd Save Changes Do Events Next Unload o Frm Application.
You just have to set the range you have defined to the place where the text is to be inserted. Collapse 0 Exit Do 'If you only want to process the first instance Loop End With Doc. Thank you for the progress indicator code and the tip on how to do this better and, I am always keen to learn new things if it will help me in life.
Although you can save a lot of time by turning screen updates off, you can also find performance gains by writing your code in such a way that Excel needs to update the screen as little as possible. Remove the line indicated to search for every instance. The following does that for the first instance of the found text (matching the case). Caption = "Processing document " & i - 1 & " of " & doc To Open. Count End If 'Open each document Set Doc = Documents. Selected Items(i), _ Visible:=False, _ Addto Recent Files:=False) Set rng To Search = Doc. Screen Updating = True Msg Box "Processing complete" End If lbl_Exit: Set Doc = Nothing Set doc To Open = Nothing Set rng To Search = Nothing Exit Sub Err_Exit: Msg Box Err. Range Dim o Frm As frm Progress Dim Portion Done As Double On Error Go To Err_Exit str Text To Insert = "Annual bonus rates for the last five years" str Text To Find = "Discharge Pack" Set doc To Open = Application. Sub Insert Text() Dim Doc As Document, str Text To Insert As String, str Text To Find As String Dim i As Long, doc To Open As File Dialog, s Hght As Single Dim rng To Search As Word.