Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / February 2008

Tip: Looking for answers? Try searching our database.

Avoiding the Find/Replace dialog in Word 2003

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Alan Stancliff - 18 Feb 2008 10:25 GMT
This is a question related to Word 2003 and VBA

I posed this question in an earlier thread, but it was needlessly
complicated and wordy. Here's a clearer way of formulating my question,
perhaps. I hope I'm not breaking any good netizen conventions here.

This is the previous thread:
If you use a newsreader:
news://msnews.microsoft.com:119/eonojSFcIHA.1960@TK2MSFTNGP02.phx.gbl
If you use a browser:
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.
public.word.vba.general&tid=f3baadfe-daeb-4809-9368-f0d5981d8cac&cat=en_US_eb67b
351-9403-4888-a42c-b2b58efec0aa&lang=en&cr=US&sloc=en-us&m=1&p=1


Right now, I have a routine that, in part, finds a medical record number
at the top of a document and creates an autocorrect entry for it. I put
it together with macro record and some hints from this forum. The way it
works is that the cursor jumps to the top of the document, finds the
words "Medical Record Number", selects the medical record number, which
is located just to the right, and assigns it to an autocorrect entry MRN.

I'd like to do that without relying on the dialog box, which causes
things to jump around. Assume my cursor is in section 2 and I want it to
stay that way at the end of the macro's run. How would I do that?

Here is the sample code:

Sub MyDemo()
'
' go to top of section
'
    Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=1,
Name:=""
'
' find medical record number
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "Medical Record Number: "
        .Forward = True
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdWord, Count:=1
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
'
'Assign to Autocorrect entry mrn
'
    AutoCorrect.Entries.Add Name:="mrn", Value:=Selection.Text
    Selection.EndKey Unit:=wdLine

End Sub

Regards,

Alan
Graham Mayor - 18 Feb 2008 12:40 GMT
If your previous posts are correct then you have a document that contains

*******Continuous Section 1**************
Slicem N Stichem Medical Center - Confidential

Patient Name: DOE-SMITH, JANE
MRN: 572112
Date of Birth: 9/14/1900
*******Continuous Section 2**************
Etc etc.

and you want to add the MRN number to an autocorrect entry called mrn
without any on-screen dialogs. That being the case the following macro will
do that

Dim strFind As String
Dim aText As String
Dim aEntry As AutoCorrectEntry

strFind = "MRN:*^13"
For Each aEntry In Application.Autocorrect.Entries
   With aEntry
       If .name = "mrn" Then
           .Delete
       End If
   End With
Next aEntry

With Selection.Find
       .ClearFormatting
       .Forward = True
       .Wrap = wdFindContinue
       .MatchWildcards = True
   Do While .Execute(findText:=strFind, _
   Wrap:=wdFindContinue, Forward:=True, _
   MatchWildcards:=True) = True
   aText = Selection
   aText = Mid(aText, 5, (Len(aText) - 6))
   Application.Autocorrect.Entries.Add name:="mrn", Value:=aText
   Exit Do
   Loop
End With
   Selection.EndKey Unit:=wdLine

However your current post suggests that the line now contains

Medical Record Number

That being the case the macro will not find it. You can change the line

strFind = "MRN:*^13"

to find the correct text

and if necessary change the line

aText = Mid(aText, 5, (Len(aText) - 6))

to extract the required part of that line to obtain the number.

Signature

<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor -  Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>

> This is a question related to Word 2003 and VBA
>
[quoted text clipped - 50 lines]
>
> Alan
Greg Maxey - 18 Feb 2008 13:01 GMT
Alan,

If you stay away from using the selection object that won't happen.

If your Medical Record Number:  XXXX is in the main text on the first page
then this should do:

Sub MyDemo()
Dim oRng As Word.Range
Set oRng = ActiveDocument.Range
With oRng
 With .Find
   .ClearFormatting
   .Text = "Medical Record Number: "
   .Forward = True
   .Execute
 End With
 .MoveEnd Unit:=wdWord, Count:=1
End With
AutoCorrect.Entries.Add Name:="mrn", Value:=oRng
End Sub

If it is in the header then this shouuld do:

Sub MyDemo2()
Dim oRng As Word.Range
Dim i As Long
For i = 1 To 3
 Set oRng = ActiveDocument.Sections(1).Headers(i).Range
 With oRng.Find
     .ClearFormatting
     .Text = "Medical Record Number: "
     .Forward = True
     If .Execute Then
       oRng.MoveEnd Unit:=wdWord, Count:=1
       Exit For
     End If
   End With
Next i
AutoCorrect.Entries.Add Name:="mrn", Value:=oRng
End Sub

Signature

~~~~~~~~~~~~~~~~~~~~~~~~~~~
Greg Maxey -  Word MVP

My web site http://gregmaxey.mvps.org
Word MVP web site http://word.mvps.org
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> This is a question related to Word 2003 and VBA
>
[quoted text clipped - 50 lines]
>
> Alan
Alan Stancliff - 18 Feb 2008 21:59 GMT
Thank you Graham and Greg,

I'll be studying this, along with a post in a related thread by Shauna
Kelley, to try to learn more about VBA. More than 10 years ago, I did a
fair amount of programming during the days of DOS in both Powerbasic and
two implementations of WordPerfect macro command language (version 5x
and 6x). Version 6x was a real programming language, not a recorder, and
5x had if-then statements, variables, etc. Both were procedural, and 6x
was modular, as was Powerbasic. But I never really attempted anything
that had object-oriented concepts or a lot of GUI, and I am a bit thrown
by it all with its concept of containers, methods, properties, etc.
Little by little, I'll get the basic concept down.

So thanks for your patience with an old guy trying to learn something new.

Regards,

Alan Stancliff

> This is a question related to Word 2003 and VBA
>
[quoted text clipped - 50 lines]
>
> Alan
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.