Find & Replace All - Subscripts

B

briggs1055

Hi

Query regarding Word 2003:

I have a number of documents to format, required to change all AAl2O3 to
have the 2 & 3 as subscript to show as chemical formula for the mineral.

I've set up autocorrect within my templates, so it does it when I type....
however working for a large corporation I'm unable to change the normal.dot
template, therefore get the document back to re-format!

I've tried to find & replace the word however within the advance options you
can only select the whole word to be subscript not individual characters....

Any help would be brilliant as I have a fair few large docs to do!

Thanks
 
D

DeanH

Format one AAl2O3 to be exactly as you need it, select it and then copy to
the clipboard. Open Replace, in the Find What, paste the usual AAl2O3, in the
Replace With type ^c, this represents the Clipboard contents, now Replace.

Hope this helps
DeanH
 
M

macropod

Hi briggs1055,

The following macro will search the active document for all numbers preceded by a letter or a right bracket, and subscript just the
numbers. Unless you're working with isotopes, the results should be correct - you'll need to apply the isotope superscripting
yourself (if the numbers are already superscripted, they’ll be left alone).

If your document has other alphanumeric strings in which a non-superscripted number follows a letter (eg Table cell references),
you’ll need to select only the range(s) containing the text to be converted and answer ‘No’ to the prompt.

Sub ChemicalFormatter()
Dim oRng As Range, fRng As Range, bState As Boolean
Application.ScreenUpdating = False
Select Case MsgBox("Do you want to process the whole document?", _
vbYesNoCancel + vbQuestion, "Chemical Formatter")
Case vbYes
bState = True
Case vbNo
bState = False
Case vbCancel
End
End Select
With Selection
Set oRng = .Range
With .Find
.ClearFormatting
.Text = "[A-Za-z)][0-9]{1,}"
.MatchWildcards = True
.Wrap = wdFindContinue
.Forward = True
Do While .Execute = True
Set fRng = ActiveDocument.Range(Start:=Selection.Start + 1, End:=Selection.End)
If bState = False Then
If fRng.Start >= oRng.End Then Exit Do
If fRng.End >= oRng.End Then fRng.End = oRng.End
End If
If fRng.Font.Superscript = False Then fRng.Font.Subscript = True
fRng.Collapse Direction:=wdCollapseEnd
Loop
End With
End With
oRng.Select
Set fRng = Nothing
Set oRng = Nothing
Application.ScreenUpdating = True
End Sub
 
B

briggs1055

Thanks - Brilliant

DeanH said:
Format one AAl2O3 to be exactly as you need it, select it and then copy to
the clipboard. Open Replace, in the Find What, paste the usual AAl2O3, in the
Replace With type ^c, this represents the Clipboard contents, now Replace.

Hope this helps
DeanH
 
B

briggs1055

Thanks - Brilliant!

macropod said:
Hi briggs1055,

The following macro will search the active document for all numbers preceded by a letter or a right bracket, and subscript just the
numbers. Unless you're working with isotopes, the results should be correct - you'll need to apply the isotope superscripting
yourself (if the numbers are already superscripted, they’ll be left alone).

If your document has other alphanumeric strings in which a non-superscripted number follows a letter (eg Table cell references),
you’ll need to select only the range(s) containing the text to be converted and answer ‘No’ to the prompt.

Sub ChemicalFormatter()
Dim oRng As Range, fRng As Range, bState As Boolean
Application.ScreenUpdating = False
Select Case MsgBox("Do you want to process the whole document?", _
vbYesNoCancel + vbQuestion, "Chemical Formatter")
Case vbYes
bState = True
Case vbNo
bState = False
Case vbCancel
End
End Select
With Selection
Set oRng = .Range
With .Find
.ClearFormatting
.Text = "[A-Za-z)][0-9]{1,}"
.MatchWildcards = True
.Wrap = wdFindContinue
.Forward = True
Do While .Execute = True
Set fRng = ActiveDocument.Range(Start:=Selection.Start + 1, End:=Selection.End)
If bState = False Then
If fRng.Start >= oRng.End Then Exit Do
If fRng.End >= oRng.End Then fRng.End = oRng.End
End If
If fRng.Font.Superscript = False Then fRng.Font.Subscript = True
fRng.Collapse Direction:=wdCollapseEnd
Loop
End With
End With
oRng.Select
Set fRng = Nothing
Set oRng = Nothing
Application.ScreenUpdating = True
End Sub


--
Cheers
macropod
[Microsoft MVP - Word]


briggs1055 said:
Hi

Query regarding Word 2003:

I have a number of documents to format, required to change all AAl2O3 to
have the 2 & 3 as subscript to show as chemical formula for the mineral.

I've set up autocorrect within my templates, so it does it when I type....
however working for a large corporation I'm unable to change the normal.dot
template, therefore get the document back to re-format!

I've tried to find & replace the word however within the advance options you
can only select the whole word to be subscript not individual characters....

Any help would be brilliant as I have a fair few large docs to do!

Thanks

.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top