MyMacro for Versifying text for E-Sword.

My Email: tech at davidcox (.) com (.) mx
Substitute @ for "at" and just a period with no spaces  instead of " (.) "

Disclaimer: This macro has some "errors" so I cannot vouch for it. I am releasing it after having spent probably 50 hours working on it and using it. Even though I say it has "errors", please note that the usefulness of this macro still makes up for what it doesn't do or does wrong. Basically what took me 5-8 hours to versify in e-Sword, this macro will do in about 60 seconds to 3-8 minutes depending on how long your text is.

ERRORS: I consider any verse references that can be identified and converted and are not an error. This is quite an undertaking to try and guess all the possible combinations and variations of everything every written as far as referring to the Bible, and parsing it for e-Sword. Please note that no roman numerals e.g. John xii. 2, are treated in this macro. The reason for that is that the Romanize macro will regularly corrupt a sermon outline trying to convert it. Therefore it is in a separate macro to be run as needed.

Also not that there are still bugs all through this macro, and it is extremely highly recommended that you (1) work on copies and backup frequently, (2) look through the finished text to try and catch corruptions. (If you find weird looking references, please send them to me and I will try to fix them as I have time.) Also note every time I use this, I find some Bible reference that it skips, and a few that get corrupted, for example, Johames 12:1 instead John 12:1. Normally it should not put one book reference for another (I think I got all those bugs out). But I cannot guarantee anything. As far as I know, there are no harmful code in this (other than changing your text in a document, which could be considered harmful by some.) But nothing malicious. If you have problems please send me your complaints with the original of what was corrupted.

NOTES: Please note that this macro makes literally thousands of replacements in a Word document before it is through, and as such, will take a lot of time if (1) your document is large, or (2) if your computer is slow and has little memory. I have not gotten any out of memory errors (it works on one of our computers with only a 512MB setup).

Note that this macro is best for material already in Word or that can be cut and pasted into Word. If you are looking for the same for e-Sword Dictionaries, Commentaries, etc. I would suggest either e-Sword Med, Chad's Commentary maker, etc. This need the material originally in a Word document to work.

Secondary Macro - "DoFindReplace" Because of the large number of search and replaces that is needed, I have made this macro modular, using a second macro named DoFindReplace which is the workhorse of the macro. It must exist for the Versify macro to work. It's purpose is to reduce the code size by a factor probably of about 20 times smaller. It must be installed into the Normal Macros before or after versify, (doesn't matter), but you don't call it, the Versify macro will call it when it is necessary.

How the Macro Works - This macro makes excessive use of Regular Expressions (RegEx). At present some of these expressions are so complex that Word chokes on it, and I have to do a work around. Basically it looks for a pattern of a particular set of letters separated by a number with a colon and then another number. Matthew 12:1. It tries to include any extra spaces, commas, periods, etc in the search expression. I still am having problems with references to the church fathers and stuff that would be something like Antiquities 14.5. I just am not going to filter those kinds of references out because it is rare that one would be identified by the macro anyway.

At first I used straight substitute, Mark 12:1 is converted to Mar_12:1, but I found that there were too many substitutions. I was able to reduce the code size by using RegEx and trying to find the key letters in each book, which is riskier as far as errors, but better because I cannot possibly check for every hair brained substitution out there. Mw. for Matthew for example. This was commonly used in 1800's with some writers. It still won't fix that one by the way. On the todo list. My typical need is a book of about 100 to 500 pages that I need to versify everything before I put it into an e-Sword TOP. With 500 pages, set it working before lunch and come back an hour later. That is long. Most of my chapters are around 20-50 pages and it is almost instantaneous.

This macro should only convert legitimate Bible references, i.e. John 3:16 to Joh_3:16. Anything like John 3 will simply be ignored.

INSTALLING IN MSWORD. (Note that my setup is in Spanish XP, so I am guessing at the correct menu options in Word here.)

  1. Open MS Word.
  2. On the Menu, click, Tools-> Macro-> Visual Basic Editor.
  3. Come back to this page, copy below, and then insert in the Visual Basic Editor.
  4. On my setup (which may be different for you) I need to put it in Normal -> Modules -> NewMacros for it to be available every time you open Word. (Click on the plus [+] beside Normal to open it, and from the dropdown menu, click on [+] of Modules, then click on [+] of NewMacros.) See graphic at right.
  5. Double click on New Macros to open that and then copy and paste into Word. Save and exit Microsoft Visual Basic Editor.
  6. TO REMOVE THIS MACRO FROM WORD - On the Menu, click, Tools-> Macro-> Visual Basic Editor. Find the section for Versify and DoFindReplace and delete them. Save and exit.

NOTES: I work both with English and Spanish texts, so since e-Sword needs the verse references in a set "one way" for either, this macro also will convert all Spanish Bible references into what e-Sword is looking for.

I also try to do some Bible book misspelling correction in this macro, finding commonly misspelled Bible book names.

To use in Word, Alt F8, select Versify from the macro list.

Alternately, to install on the menu bar.

  1. Open MS Word.
  2. On the MS Word Menu, Click Tools, Personalize.
  3. In the popup box (see image below). Note may Word is Spanish, so yours should read 3 tabs, Toolbar, Commands, Options.

  4. In the "Categories" box on left, find Macros, and in the right box, find Normal.NewMacros.versify, and drag that to the toolbar and location where you want it. While the Personalize box is open, you can right click on the macro "Normal.NewMacros.versify" now on the menu bar, and in the space "Name:" change the name to just "Versify".
  5. To Remove this macro. Open Tools->Personalize. Grab the "Versify" macro on menu bar and drag it back to the Personalize dialog box and it will disappear off the menu bar.

Copy from below this line to the end (not including final line)
I will name this below by versions, starting at version 1. If I make changes to the macro to fix stuff, which always seems to happen, then I will update the version number.

Version: 1.1 new as of February 12, 2009

Macro History

09-02-12 Fixed Levit1Co_10:1, 2PedRom_2:4, added more notes on how it works.


Sub versify()
' versify Macro
' Version 1.0
' PURPOSE: To prepare a text for importation into e-Sword so that the tooltip function will properly work.
' Macro grabada el 31/10/2007 por David R. Cox
' http://word.mvps.org/faqs/MacrosVBA/ProcArguments.htm

'**************************************************************
' This macro uses a call to a second macro, DoFindReplace
' DoFindReplace has 5 arguments:
' 1st - text searched for
' 2nd - replacemente text
' 3rd MatchWildcards which will enable Regex expressions
' 4th Match Case
' 5th Match only Whole Word
' In most cases I will try to parse the Search text to separate out the Chapter and Verse with () in search for text,
' and then restore them with \1:\2 which is the first parentheses is \1 and ":" and \2 would be the actual verses.

'*****************Notes on How this Macro Functions *****************************
' Most all Bible references can be identified by the following elements {book} {chapter}:{verse}
' What this macro will do is to search through a text and painfully and extensively look for that pattern.
' In the case of the {book} we have various different possibilities, from the 66 books of the Bible
' to probably a half dozen or dozen variations of each book. In most cases I use a RegEx (Regular Expression)
' to identify the Book of the Bible.
' I have not included in this macro the ability to convert Roman Bible references to Latin numbers
' because it mistakenly will convert a regular sermon outline format, so the Romanize is a separate macro
' that the user has to use before versifying.
' Also note that in some cases the RegEx became to complex for Word to handle, and I had to revert to
' regular brute substitution. Some cases will not be found. Send them to me, and I will try to work them in.

'****************************** POP DIALOG BOX IDENTIFYING MACRO AT BEGINNING **************************
'The popup box at the beginning of the macro was removed, but may be restored if you want that. It is more annoying to me than useful.
'mystring = MsgBox("This Macro will search and replace all verse reference occurrences in preparation for e-Sword. Use Ctrl-Inter to Break out.", vbOKOnly, "David Cox's Versify MS Word Maco")
'If MsgBox(Prompt:="DCox: Versify this document? (Ctrl-Inter to Break out)", Buttons:=vbYesNo + vbQuestion, Title:="-- Versify this document --") = vbNo Then
' Exit Sub
'End If

' ************* MORMON BOOKS OF THE BIBLE ******************
' Any references to the Book of Mormon will trip this Macro up.
' So we replace them before we start and restore them at the end of the macro.
' Jarom -> JaRom_, Nephi -> NEph_, Ether -> EtHeb_, Alma -> ALam_, Jacob -> JaOba_,
Call DoFindReplace("Jarom", "JarMormon777", True, False, False)
Call DoFindReplace("Nephi", "NepMormon777", True, False, False)
Call DoFindReplace("Ether", "EthMormon777", True, False, False)
Call DoFindReplace("Alma ([0-9]{1,3}):([0-9]{1,3})", "AlmMormon777 \1:\2", True, False, False)
Call DoFindReplace("Jacob ([0-9]{1,3}):([0-9]{1,3})", "JacMormon777 \1:\2", True, False, False)

' ************* Various Spacing and Improperly Formatted Situations **************************
' Extract extra space before and after : in verse reference. like this, Gen 3 : 4, Gen 3: 4, or Gen 3 :4
' This section will remove extra spacing around the colon between Chapter and Verse.
StatusBar = "DCox: Replacing ' : ' errors"
' Parameters (below) 1. text to search for 2. replacement text 3. matchwildcards 4. Format
Call DoFindReplace("([0-9]{1,3}) : ([0-9]{1,3})", "\1:\2", True, False, False)
Call DoFindReplace("([0-9]{1,3}): ([0-9]{1,3})", "\1:\2", True, False, False)
Call DoFindReplace("([0-9]{1,3}) :([0-9-]{1,7})", "\1:\2", True, False, False)

' This line is for Reference like this Ps.1:2
StatusBar = "DCox: Replacing period between book and chapter errors"
'Call DoFindReplace(" ,", ",", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3}).([0-9])", "\1. \2", True, False, False)
Call DoFindReplace(". ", ". ", True, False, False)
Call DoFindReplace(". ", ". ", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})..([0-9]{1,3})", "\1. \2", True, False, False)

' This line is for comma, period, and space errors
StatusBar = "DCox: Replacing comma-period errors"
Call DoFindReplace(" ", " ", True, False, False)
Call DoFindReplace("([0-9]{1,3}),([0-9-]{1,7})", "\1, \2", True, False, False)
Call DoFindReplace("([0-9]{1,3}).([0-9-]{1,7})", "\1:\2", True, False, False)
Call DoFindReplace("([0-9]{1,3}). ([0-9-]{1,7})", "\1:\2", True, False, False)
Call DoFindReplace("([0-9]{1,3}:[0-9]{1,3})[, ]{1,2}([0-9]{1,3}:[0-9]{1,3})", "\1; \2", True, False, False)
Call DoFindReplace("([0-9]{1,3}:[0-9]{1,3})[, ]{1,2}([0-9]{1,3}:[0-9]{1,3})", "\1; \2", True, False, False)

' This line is for hyphen errors like Le 10:1- 3
Call DoFindReplace("([0-9]{1,3}):([0-9-]{1,7}) - ([0-9-]{1,7})", "\1:\2-\3", True, False, False)
Call DoFindReplace("([0-9]{1,3}):([0-9-]{1,7})- ([0-9-]{1,7})", "\1:\2-\3", True, False, False)
Call DoFindReplace("([0-9]{1,3}):([0-9-]{1,7}) -([0-9-]{1,7})", "\1:\2-\3", True, False, False)

'This will try to prevent versification of this type of reference. Ex 12:1-13:22.
Call DoFindReplace("([0-9]{1,3}):([0-9]{1,3})-([0-9]{1,3}):([0-9]{1,3})", "\1:\2 -- \3:\4", True, False, False)

'This will try to replace sequential verses, like 12:1,2 to 12:1-2.
StatusBar = "DCox: Fixing Gen 1:4,5 to 1:4-5"
Call DoFindReplace("([0-9]{1,3}):1, 2", "\1:1-2", True, False, False)
Call DoFindReplace("([0-9]{1,3}):2, 3", "\1:2-3", True, False, False)
Call DoFindReplace("([0-9]{1,3}):3, 4", "\1:3-4", True, False, False)
Call DoFindReplace("([0-9]{1,3}):4, 5", "\1:4-5", True, False, False)
Call DoFindReplace("([0-9]{1,3}):5, 6", "\1:5-6", True, False, False)
Call DoFindReplace("([0-9]{1,3}):6, 7", "\1:6-7", True, False, False)
Call DoFindReplace("([0-9]{1,3}):7, 8", "\1:7-8", True, False, False)
Call DoFindReplace("([0-9]{1,3}):8, 9", "\1:8-9", True, False, False)
Call DoFindReplace("([0-9]{1,3}):9, 10", "\1:9-10", True, False, False)
Call DoFindReplace("([0-9]{1,3}):10, 11", "\1:10-11", True, False, False)
Call DoFindReplace("([0-9]{1,3}):11, 12", "\1:11-12", True, False, False)
Call DoFindReplace("([0-9]{1,3}):12, 13", "\1:12-13", True, False, False)
Call DoFindReplace("([0-9]{1,3}):13, 14", "\1:13-14", True, False, False)
Call DoFindReplace("([0-9]{1,3}):14, 15", "\1:14-15", True, False, False)
Call DoFindReplace("([0-9]{1,3}):15, 16", "\1:15-16", True, False, False)
Call DoFindReplace("([0-9]{1,3}):16, 17", "\1:16-17", True, False, False)
Call DoFindReplace("([0-9]{1,3}):17, 18", "\1:17-18", True, False, False)
Call DoFindReplace("([0-9]{1,3}):18, 19", "\1:18-19", True, False, False)
Call DoFindReplace("([0-9]{1,3}):19, 20", "\1:19-20", True, False, False)
Call DoFindReplace("([0-9]{1,3}):20, 21", "\1:20-21", True, False, False)
Call DoFindReplace("([0-9]{1,3}):21, 22", "\1:21-22", True, False, False)
Call DoFindReplace("([0-9]{1,3}):22, 23", "\1:22-23", True, False, False)
Call DoFindReplace("([0-9]{1,3}):23, 24", "\1:23-24", True, False, False)
Call DoFindReplace("([0-9]{1,3}):24, 25", "\1:24-25", True, False, False)
Call DoFindReplace("([0-9]{1,3}):25, 26", "\1:25-26", True, False, False)
Call DoFindReplace("([0-9]{1,3}):26, 27", "\1:26-27", True, False, False)
Call DoFindReplace("([0-9]{1,3}):27, 28", "\1:27-28", True, False, False)
Call DoFindReplace("([0-9]{1,3}):28, 29", "\1:28-29", True, False, False)
Call DoFindReplace("([0-9]{1,3}):29, 30", "\1:29-30", True, False, False)
Call DoFindReplace("([0-9]{1,3}):30, 31", "\1:30-31", True, False, False)
Call DoFindReplace("([0-9]{1,3}):31, 32", "\1:31-32", True, False, False)
Call DoFindReplace("([0-9]{1,3}):32, 33", "\1:32-33", True, False, False)
Call DoFindReplace("([0-9]{1,3}):33, 34", "\1:33-34", True, False, False)
Call DoFindReplace("([0-9]{1,3}):34, 35", "\1:34-35", True, False, False)
Call DoFindReplace("([0-9]{1,3}):35, 36", "\1:35-36", True, False, False)
Call DoFindReplace("([0-9]{1,3}):36, 37", "\1:36-37", True, False, False)
Call DoFindReplace("([0-9]{1,3}):37, 38", "\1:37-38", True, False, False)
Call DoFindReplace("([0-9]{1,3}):38, 39", "\1:38-39", True, False, False)
Call DoFindReplace("([0-9]{1,3}):39, 40", "\1:39-40", True, False, False)
Call DoFindReplace("([0-9]{1,3}):40, 41", "\1:40-41", True, False, False)
Call DoFindReplace("([0-9]{1,3}):41, 42", "\1:41-42", True, False, False)
Call DoFindReplace("([0-9]{1,3}):42, 43", "\1:42-43", True, False, False)
Call DoFindReplace("([0-9]{1,3}):43, 44", "\1:43-44", True, False, False)
Call DoFindReplace("([0-9]{1,3}):44, 45", "\1:44-45", True, False, False)
Call DoFindReplace("([0-9]{1,3}):45, 46", "\1:45-46", True, False, False)
Call DoFindReplace("([0-9]{1,3}):46, 47", "\1:46-47", True, False, False)
Call DoFindReplace("([0-9]{1,3}):47, 48", "\1:47-48", True, False, False)
Call DoFindReplace("([0-9]{1,3}):48, 49", "\1:48-49", True, False, False)
Call DoFindReplace("([0-9]{1,3}):49, 50", "\1:49-50", True, False, False)
Call DoFindReplace("([0-9]{1,3}):50, 51", "\1:50-51", True, False, False)
Call DoFindReplace("([0-9]{1,3}):51, 52", "\1:51-52", True, False, False)
Call DoFindReplace("([0-9]{1,3}):52, 53", "\1:52-53", True, False, False)
Call DoFindReplace("([0-9]{1,3}):53, 54", "\1:53-54", True, False, False)
Call DoFindReplace("([0-9]{1,3}):54, 55", "\1:54-55", True, False, False)
Call DoFindReplace("([0-9]{1,3}):55, 56", "\1:55-56", True, False, False)


' Ill-Formed Numbers 2nd before books
StatusBar = "DCox: Replacing wrong format II, III errors"
' Replacing iii for 3
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[iI1l]{1}[Jj .]{1,3}[Oo]{1}[HhNn .,]{1,4})1:([0-9]{1,3})", "3Jo_1:\2", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[iI1l]{1}[Jj .]{1,3}[Oo]{1}[HhNn .,]{1,4})([0-9]{1,3})", "3Jo_1:\2", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Jj .]{1,3}[Oo]{1}[HhNn .,]{1,4})1:([0-9]{1,3})", "2Jo_1:\2", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Jj .]{1,3}[Oo]{1}[HhNn .,]{1,4})([0-9]{1,3})[ .,;]{1}", "2Jo_1:\2", True, False, False)
Call DoFindReplace("([iI1l]{1}[Jj .]{1,3}[Oo]{1}[HhNn .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Jo_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[Jj .]{1,3}[HhNn .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Jo_\2:\3", True, False, False)

' Mixed Number problems Rev 22. i8
Call DoFindReplace(" i([0-9])", " 1\1", True, False, False)

' Replacing First book
Call DoFindReplace("First Samuel ([0-9]{1,3}:[0-9]{1,3})", "1SA_\1", True, False, False)
Call DoFindReplace("FIRST SAMUEL ([0-9]{1,3}:[0-9]{1,3})", "1SA_\1", True, False, False)
Call DoFindReplace("First Chronicles ([0-9]{1,3}:[0-9]{1,3})", "1CH_\1", True, False, False)
Call DoFindReplace("FIRST CHRONICLES ([0-9]{1,3}:[0-9]{1,3})", "1CH_\1", True, False, False)
Call DoFindReplace("Primera Reyes ([0-9]{1,3}:[0-9]{1,3})", "1Ki_\1", True, False, False)
Call DoFindReplace("PRIMERA REYES ([0-9]{1,3}:[0-9]{1,3})", "1KI_\1", True, False, False)
Call DoFindReplace("Primera Samuel ([0-9]{1,3}:[0-9]{1,3})", "1SA_\1", True, False, False)
Call DoFindReplace("PRIEMRA SAMUEL ([0-9]{1,3}:[0-9]{1,3})", "1SA_\1", True, False, False)
Call DoFindReplace("First Crónicas ([0-9]{1,3}:[0-9]{1,3})", "1CH_\1", True, False, False)
Call DoFindReplace("FIRST CRONICAS ([0-9]{1,3}:[0-9]{1,3})", "1CH_\1", True, False, False)
Call DoFindReplace("First Corinthians ([0-9]{1,3}:[0-9]{1,3})", "1CO_\1", True, False, False)
Call DoFindReplace("FIRST CORINTHIANS ([0-9]{1,3}:[0-9]{1,3})", "1CO_\1", True, False, False)
Call DoFindReplace("First Thessalonians ([0-9]{1,3}:[0-9]{1,3})", "1TH_\1", True, False, False)
Call DoFindReplace("FIRST THESSALONIANS ([0-9]{1,3}:[0-9]{1,3})", "1TH_\1", True, False, False)
Call DoFindReplace("First Timothy ([0-9]{1,3}:[0-9]{1,3})", "1TI_\1", True, False, False)
Call DoFindReplace("FIRST TIMOTHY ([0-9]{1,3}:[0-9]{1,3})", "1TI_\1", True, False, False)
Call DoFindReplace("First Peter ([0-9]{1,3}:[0-9]{1,3})", "1PE_\1", True, False, False)
Call DoFindReplace("FIRST PETER ([0-9]{1,3}:[0-9]{1,3})", "1PE_\1", True, False, False)
Call DoFindReplace("First John ([0-9]{1,3}:[0-9]{1,3})", "1JO_\1", True, False, False)
Call DoFindReplace("FIRST JOHN ([0-9]{1,3}:[0-9]{1,3})", "1JO_\1", True, False, False)

'Replacing Second Book
Call DoFindReplace("Second Samuel ([0-9]{1,3}:[0-9]{1,3})", "2SA_\1", True, False, False)
Call DoFindReplace("SECOND SAMUEL ([0-9]{1,3}:[0-9]{1,3})", "2SA_\1", True, False, False)
Call DoFindReplace("Second Chronicles ([0-9]{1,3}:[0-9]{1,3})", "2CH_\1", True, False, False)
Call DoFindReplace("SECOND CHRONICLES ([0-9]{1,3}:[0-9]{1,3})", "2CH_\1", True, False, False)
Call DoFindReplace("Segunda Reyes ([0-9]{1,3}:[0-9]{1,3})", "2Ki_\1", True, False, False)
Call DoFindReplace("SEGUNDA REYES ([0-9]{1,3}:[0-9]{1,3})", "2KI_\1", True, False, False)
Call DoFindReplace("Segunda Samuel ([0-9]{1,3}:[0-9]{1,3})", "2SA_\1", True, False, False)
Call DoFindReplace("SEGUNDA SAMUEL ([0-9]{1,3}:[0-9]{1,3})", "2SA_\1", True, False, False)
Call DoFindReplace("Segunda Crónicas ([0-9]{1,3}:[0-9]{1,3})", "2CH_\1", True, False, False)
Call DoFindReplace("SEGUNDA CRONICAS ([0-9]{1,3}:[0-9]{1,3})", "2CH_\1", True, False, False)
Call DoFindReplace("Second Corinthians ([0-9]{1,3}:[0-9]{1,3})", "2CO_\1", True, False, False)
Call DoFindReplace("SECOND CORINTHIANS ([0-9]{1,3}:[0-9]{1,3})", "2CO_\1", True, False, False)
Call DoFindReplace("Second Thessalonians ([0-9]{1,3}:[0-9]{1,3})", "2TH_\1", True, False, False)
Call DoFindReplace("SECOND THESSALONIANS ([0-9]{1,3}:[0-9]{1,3})", "2TH_\1", True, False, False)
Call DoFindReplace("Second Timothy ([0-9]{1,3}:[0-9]{1,3})", "2TI_\1", True, False, False)
Call DoFindReplace("SECOND TIMOTHY ([0-9]{1,3}:[0-9]{1,3})", "2TI_\1", True, False, False)
Call DoFindReplace("Second Peter ([0-9]{1,3}:[0-9]{1,3})", "2PE_\1", True, False, False)
Call DoFindReplace("SECOND PETER ([0-9]{1,3}:[0-9]{1,3})", "2PE_\1", True, False, False)
Call DoFindReplace("Second John ([0-9]{1,3}:[0-9]{1,3})", "2JO_\1", True, False, False)
Call DoFindReplace("SECOND JOHN ([0-9]{1,3}:[0-9]{1,3})", "2JO_\1", True, False, False)

Call DoFindReplace("Segunda Corintios ([0-9]{1,3}:[0-9]{1,3})", "2CO_\1", True, False, False)
Call DoFindReplace("SEGUNDA CORINTIOS ([0-9]{1,3}:[0-9]{1,3})", "2CO_\1", True, False, False)
Call DoFindReplace("Segunda Tesalonicenses ([0-9]{1,3}:[0-9]{1,3})", "2TH_\1", True, False, False)
Call DoFindReplace("SEGUNDA TESALONICENSES ([0-9]{1,3}:[0-9]{1,3})", "2TH_\1", True, False, False)
Call DoFindReplace("Segunda Timoteo ([0-9]{1,3}:[0-9]{1,3})", "2TI_\1", True, False, False)
Call DoFindReplace("SEGUNDA TIMOTEO ([0-9]{1,3}:[0-9]{1,3})", "2TI_\1", True, False, False)
Call DoFindReplace("Segunda Pedro ([0-9]{1,3}:[0-9]{1,3})", "2PE_\1", True, False, False)
Call DoFindReplace("SEGUNDA PEDRO ([0-9]{1,3}:[0-9]{1,3})", "2PE_\1", True, False, False)
Call DoFindReplace("Segunda Juan ([0-9]{1,3}:[0-9]{1,3})", "2JO_\1", True, False, False)
Call DoFindReplace("SEGUNDA JUAN ([0-9]{1,3}:[0-9]{1,3})", "2JO_\1", True, False, False)

Call DoFindReplace("Third John ([0-9]{1,3}:[0-9]{1,3})", "3JO_\1", True, False, False)
Call DoFindReplace("THIRD JOHN ([0-9]{1,3}:[0-9]{1,3})", "3JO_\1", True, False, False)
Call DoFindReplace("Tercera Juan ([0-9]{1,3}:[0-9]{1,3})", "3JO_\1", True, False, False)
Call DoFindReplace("TERCERA JUAN ([0-9]{1,3}:[0-9]{1,3})", "3JO_\1", True, False, False)

'Judges
StatusBar = "DCox: Replacing Judges"
Call DoFindReplace("([jJ]{1}[uUdD]{1,2}[gGeEcCsS., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Jdg_\2:\3", True, False, False)
Call DoFindReplace("([jJ]{1}[uUdD]{1,2}[gGeEcCsS., ]{1,6})([2]{1,2}[0-9]{1}):([0-9-]{1,7})", "Jdg_\2:\3", True, False, False)

' Genesis
' Genesis Gen Gn Gén
StatusBar = "DCox: Replacing Genesis"
Call DoFindReplace("([Gg]{1}[eEéÉnN]{1,2}[eEsSiI., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Gen_\2:\3", True, False, False)

'Spanish Apocalipsis Apo Apc Ap
' Error Note: "Chap. 10:45, 11:17" gives me "chRev. 10:45; Rev. 11:17"
' This is picking up the "ap" of Chap and interpreting it as Revelation.
' Ap
Call DoFindReplace("( [aA]{1}[pP]{1}) ([0-9]{1,3}):([0-9-]{1,7})", "Rev_\2:\3", True, False, False)
' This will not convert Ap ##:## at the beginning of a paragraph.
' Apoc and Apocalipsis
Call DoFindReplace("([aA]{1}[pP]{1}[oO]{1}[cCaAlLiIpPsSiI .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "Rev_\2:\3", True, False, False)
' Apc
Call DoFindReplace("([aA]{1}[pP]{1}[cC .,]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Rev_\2:\3", True, False, False)

'Isaiah Isa: Isaiah, ISAIAH, Isa, Isa., Isai, Isai. Is, Is.
StatusBar = "DCox: Replacing Isaiah"
Call DoFindReplace("([iI]{1}[Ss]{1}[aAiIhH., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Isa_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([iI]{1}[Ss]{1}[aAiIíÍsS., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Isa_\2:\3", True, False, False)

' Replacing ii for 2
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Cc .]{1,3}[OoRr]{1,2}[IiNntThHaAnNsS .,]{1,10})([0-9]{1,3}):([0-9]{1,3})", "2Co_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Ss .]{1,3}[AaMm]{1,2}[MmUuEeLl .,]{1,7})([0-9]{1,3}):([0-9]{1,3})", "2Sa_\2:\3", True, False, False)

'Isa = 1Sa
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Cc .]{1,3}[Hh]{1,2}[RrOoNnIiCcLlEeSs .,]{1,10})([0-9]{1,3}):([0-9]{1,3})", "2Ch_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Kk .]{1,3}[Ii]{1,2}[NnGgsS .,]{1,6})([0-9]{1,3}):([0-9]{1,3})", "2Ki_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Tt .]{1,3}[Hh]{1,2}[EeSsAaLlOoNnIiNn .,]{1,13})([0-9]{1,3}):([0-9]{1,3})", "2Th_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Tt .]{1,3}[Ii]{1,2}[MmOoTtHhYy .,]{1,7})([0-9]{1,3}):([0-9]{1,3})", "2Ti_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Jj .]{1,3}[Oo]{1,2}[Hh .,]{1,3})([0-9]{1,3}):([0-9]{1,3})", "2Jo_\2:\3", True, False, False)
Call DoFindReplace("([iI1l]{1}[iI1l]{1}[Pp .]{1,3}[Ee]{1,2}[TtEeRr .,]{1,5})([0-9]{1,3}):([0-9]{1,3})", "2Pe_\2:\3", True, False, False)

' Replaceing i for 1
Call DoFindReplace("[iI1l]{1}[Cc .]{1,3}[OoRr]{1,2}[IiNntThHaAnNsS .,]{1,10}([0-9]{1,3}):([0-9]{1,3})", "1Co_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Ss .]{1,3}[AaMm]{1,2}[MmUuEeLl .,]{1,7}([0-9]{1,3}):([0-9]{1,3})", "1Sa_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Cc .]{1,3}[Hh]{1,2}[RrOoNnIiCcLlEeSs .,]{1,10}([0-9]{1,3}):([0-9]{1,3})", "1Ch_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Kk .]{1,3}[Ii]{1,2}[NnGgsS .,]{1,6}([0-9]{1,3}):([0-9]{1,3})", "1Ki_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Tt .]{1,3}[Hh]{1,2}[EeSsAaLlOoNnIiNn .,]{1,13}([0-9]{1,3}):([0-9]{1,3})", "1Th_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Tt .]{1,3}[Ii]{1,2}[MmOoTtHhYy .,]{1,7}([0-9]{1,3}):([0-9]{1,3})", "1Ti_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Jj .]{1,3}[Oo]{1,2}[Hh .,]{1,3}([0-9]{1,3}):([0-9]{1,3})", "1Jo_\1:\2", True, False, False)
Call DoFindReplace("[iI1l]{1}[Pp .]{1,3}[Ee]{1,2}[TtEeRr .,]{1,5}([0-9]{1,3}):([0-9]{1,3})", "1Pe_\1:\2", True, False, False)

' Verses abbreviation like this vv. 4-6 because vv is not a roman numeral
' and vv. 4-6 will be converted to v5:4-6
' This will cause an error like verse 5, v. 5
' It will be converted to 5:5.
Call DoFindReplace("vv[ :.]{1,2}([0-9-]{1,7})", "verses \1", True, False, False)
Call DoFindReplace("VV[ :.]{1,2}([0-9-]{1,7})", "verses \1", True, False, False)


'Prepasses for problematic books which conflict with roman numerals.
' Books-Abbreviations all that end with a final clxv or i (also the below listed plus a period Ex and Ex.
' c - Apc, Ac, Hc,
' l - Daniel, 1-2Samuel, Revel, Psal, Sal, Eccl, Ecl, Song of Sol, Canticl, Ezekiel, Ezl, Joel, Jl, Phil, Col, Thesal,
' v - Lev, Rev, Lv, Prov
' x - Ex
' i - Isai, Levi, 1-2Ki, Ecclesi, Dani, Abdi, Mi, Haggai, Malachi, Cori, Phili, 1-2Ti, Ti,


StatusBar = "DCox: Replacing Problematic Books which conflict with Roman Numerals"
' Exodus must come before Roman Numerals Error Ex. xx.-xxiii. E10:20:-xxiii.
' Ex iv. 5 = E10:4:5
Call DoFindReplace("([eEéÉ]{1}[xX]{1}[oOdDuUsS., ]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Exo_\2:\3", True, False, False)
Call DoFindReplace("([eE]{1}[xX]{1}[oOdDuUsS., ]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Exo_\2:\3", True, False, False)

'1 Chronicles 1Ch
StatusBar = "DCox: Replacing 1 Chronicles"
Call DoFindReplace("(1[sStT .]{1,4}[cC]{1}[hH]{1}[rRoOnNiIcClLeEsS., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "1Ch_\2:\3", True, False, False)
Call DoFindReplace("(I [cC]{1}[hH]{1}[rRoOnNiIcClLeEsS., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "1Ch_\2:\3", True, False, False)
'Spanish
StatusBar = "DCox: Replacing 1 Chronicles Spanish"
Call DoFindReplace("(1[ºª. ]{1,3}[cC]{1}[rR]{1}[oOóÓnNiIcCaAsS., ]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "1Ch_\2:\3", True, False, False)
Call DoFindReplace("(1[cC]{1}[rR]{1}[oOóÓnNiIcCaAsS., ]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "1Ch_\2:\3", True, False, False)

'2 Chronicles 2Ch
StatusBar = "DCox: Replacing 2 Chronicles"
Call DoFindReplace("([2nNdD]{1,5}[. cC]{1,3}[hH]{1}[rRoOnNiIcClLeEsS., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "2Ch_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI .]{1,3}[cC]{1}[hH]{1}[rRoOnNiIcClLeEsS., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "2Ch_\2:\3", True, False, False)
'Spanish
StatusBar = "DCox: Replacing 2 Chronicles Spanish"
Call DoFindReplace("(2[ºª. ]{1,4}[cC]{1}[rR]{1}[oOóÓnNiIcCaAsS., ]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ch_\2:\3", True, False, False)
Call DoFindReplace("([2ºª. ]{1,4}[cC]{1}[rR]{1}[oOóÓnNiIcCaAsS., ]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ch_\2:\3", True, False, False)

'1COr error
' Causes error Lev. xix. 18. will give Le5:19:18.
'Lev_ Leviticus LEVITICUS Lev Lev. Levi Lv
' Revel. = ReveLev_ Must break LE and LV into difference scans
Call DoFindReplace("Le([0-9]{1,3}):([0-9-]{1,7})", "Lev_\1:\2", True, False, False)
Call DoFindReplace("([lL]{1}[eE]{1}[vV]{1}[iItTcCuUsS., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "Lev_\2:\3", True, False, False)
Call DoFindReplace("([lL]{1}[vV]{1}[., ]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "Lev_\2:\3", True, False, False)
Call DoFindReplace("(Levítico) ([0-9]{1,3}):([0-9-]{1,7})", "Lev_\2:\3", True, False, False)

' Causes error on Joel to JoeLev_
Call DoFindReplace("([Jj]{1}[oO]{1}[eElL., ]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Joe_\2:\3", True, False, False)

' Causes error Rev. 15:4 gives Re5:15:4
'Revelation Rev_ REVELATION Reve Rv
' "Prov" = PRev_ Must separate out R and e, or R and v.
Call DoFindReplace("([rR]{1}[eE]{1}[vVeElLaAtTiIoOnN., ]{1,12})([0-9]{1,3}):([0-9-]{1,7})", "Rev_\2:\3", True, False, False)
Call DoFindReplace("([rR]{1}[vV]{1}[., ]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Rev_\2:\3", True, False, False)
'Spanish Apocalipsis moved above Isaiah Apocalipsis = ApocalipsIsa

' This section must be repeated after scan for Roman Numerals

' OLD TESTAMENT BOOKS OLD TESTAMENT BOOKS OLD TESTAMENT BOOKS OLD TESTAMENT BOOKS OLD TESTAMENT BOOKS
' Substitute Books for E-Sword Abbreviation

'Numbers
StatusBar = "DCox: Replacing Numbers"
Call DoFindReplace("([Nn]{1}[uUúÚmM]{1,2}[bBeErRoOsS., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Num_\2:\3", True, False, False)

'Deuteronomy
StatusBar = "DCox: Replacing Deuteronomy"
Call DoFindReplace("([dD]{1}[eE]{1}[uUtT]{1,4}[eErRoOnNmMyYiI., ]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "Deu_\2:\3", True, False, False)
Call DoFindReplace("De ([0-9]{1,3}):([0-9-]{1,7})", "Deu_\1:\2", True, False, False)

'Joshua
StatusBar = "DCox: Replacing Joshua"
Call DoFindReplace("([jJ]{1}[oO]{1}[sShHuUaAeEéÉ., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Jos_\2:\3", True, False, False)

'Ruth Rth
StatusBar = "DCox: Replacing Ruth"
Call DoFindReplace("([rR]{1}[uUtT]{1,2}[hH., ]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Rth_\2:\3", True, False, False)

'1 Samuel 1Sa
StatusBar = "DCox: Replacing 1 Samuel"
Call DoFindReplace("(1 [sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Sa_\2:\3", True, False, False)
Call DoFindReplace("(1[sStT°ºª.]{1,3} [sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Sa_\2:\3", True, False, False)
Call DoFindReplace("(1[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Sa_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[ .]{1,2}[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Sa_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Sa_\2:\3", True, False, False)

'2 Samuel 2Sa
'([iI]{1}[iI]{1}[sS .]{1,3}[aAmM]{2}[uUeElL .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})
StatusBar = "DCox: Replacing 2 Samuel"
Call DoFindReplace("(2 [sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Sa_\2:\3", True, False, False)
Call DoFindReplace("(2[nNdD°ºª.]{1,3} [sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Sa_\2:\3", True, False, False)
Call DoFindReplace("(2[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Sa_\2:\3", True, False, False)
Call DoFindReplace("(II[ .]{1,2}[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Sa_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[sS]{1}[aAmM]{1,2}[uUeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Sa_\2:\3", True, False, False)

'Psalms Psa
StatusBar = "DCox: Replacing Psalms"
Call DoFindReplace("([pP]{1}[sS]{1}[aAlLmMsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Psa_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([sS]{1}[aA]{1}[lLmMoOsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Psa_\2:\3", True, False, False)

'1 Kings 1Ki
StatusBar = "DCox: Replacing 1 Kings"
Call DoFindReplace("(1[sStT]{2}[., ]{1,2}[kK]{1}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "1Ki_\2:\3", True, False, False)
Call DoFindReplace("(1[., kK]{1,3}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "1Ki_\2:\3", True, False, False)
Call DoFindReplace("(I [kK]{1}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "1Ki_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(1[°ºª ]{1,2}[rR]{1}[eEyYsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "1Ki_\2:\3", True, False, False)

'2 Kings 2Ki
StatusBar = "DCox: Replacing 2 Kings"
Call DoFindReplace("(2[nNdD., ]{1,4}[kK]{1}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "2Ki_\2:\3", True, False, False)
Call DoFindReplace("(2[kK]{1}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "2Ki_\2:\3", True, False, False)
Call DoFindReplace("(II [kK]{1}[iInNgGsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "2Ki_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[°ºªAaOo ]{1,3}[rR]{1}[eEyYsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "2Ki_\2:\3", True, False, False)
Call DoFindReplace("(2[rR]{1}[eEyYsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "2Ki_\2:\3", True, False, False)

'Ezra Ezr
StatusBar = "DCox: Replacing Ezra"
Call DoFindReplace("([eE]{1}[zZ]{1}[rRaA. ]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Ezr_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([eE]{1}[sS]{1}[dDrRaAsS]{2,4}[. ]{1,2})([0-9]{1,3}):([0-9-]{1,7})", "Ezr_\2:\3", True, False, False)

'Nehemiah Neh
StatusBar = "DCox: Replacing Nehemiah"
Call DoFindReplace("([nN]{1}[eE]{1}[hH]{1}[eEmMiIaAhHíÍiIsS .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "Neh_\2:\3", True, False, False)

'Esther Est
StatusBar = "DCox: Replacing Esther"
Call DoFindReplace("([eE]{1}[sS]{1}[tT]{1}[hHeErR .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Est_\2:\3", True, False, False)

'Job Job
StatusBar = "DCox: Replacing Job"
Call DoFindReplace("([jJ]{1}[oO]{1}[bB .,]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Job_\2:\3", True, False, False)

'Psalms conflicts with 1 and 2 Samuel moved to below 2Sam

'Proverbs Pro
StatusBar = "DCox: Replacing Proverbs"
Call DoFindReplace("([pP]{1}[rR]{1}[oOvVeErRbBiIsS .,]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "Pro_\2:\3", True, False, False)

'Ecclesiastes Ecc
StatusBar = "DCox: Replacing Ecclesiastes"
Call DoFindReplace("([eE]{1}[cC]{1}[cClLeEéÉsSiIaAtT .,]{1,14})([0-9]{1,3}):([0-9-]{1,7})", "Ecc_\2:\3", True, False, False)

'Luke Luk
StatusBar = "DCox: Replacing Luke"
Call DoFindReplace("[Ll]{1}[uU]{1}[kKeE .,]{1,5}([0-9]{1,3}):([0-9-]{1,7})", "Luk_\1:\2", True, False, False)
Call DoFindReplace("[Ll]{1}[uU]{1}[cCaAsS .,]{1,5}([0-9]{1,3}):([0-9-]{1,7})", "Luk_\1:\2", True, False, False)

'Song of Solomon Son Cantares (Crónicas = CróniSon)
StatusBar = "DCox: Replacing Song of Solomon"
Call DoFindReplace("([sS]{1}[oO]{1}[nNgG ]{1,3}[oOfFsSmMlLnN ]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "Son_\2:\3", True, False, False)
Call DoFindReplace("([cC]{1}[aAnN]{1,2}[aArRtTiIcClLeEsS .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "Son_\2:\3", True, False, False)

' Isaiah is moved to beginning (III-II-I to 3-2-1)
'Jer Jeremiah
StatusBar = "DCox: Replacing Jeremiah"
Call DoFindReplace("([jJ]{1}[eErR]{1,2}[eEmMiIíÍaAhHsS .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Jer_\2:\3", True, False, False)

'Galatians Gal
StatusBar = "DCox: Replacing Galatians"
Call DoFindReplace("([gG]{1}[aAáÁ]{1}[lLaAtTiInNsS .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "Gal_\2:\3", True, False, False)
Call DoFindReplace("([gG]{1}[lL]{1}[ .,]{1,2})([0-9]{1,3}):([0-9-]{1,7})", "Gal_\2:\3", True, False, False)

'Lamentations Lam
StatusBar = "DCox: Replacing Lamentations"
Call DoFindReplace("([lL]{1}[aAmM]{1,2}[eEnNtTcCaAiIoOnNsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "Lam_\2:\3", True, False, False)
'ERRORFIX: book of Revelation. In 22:12 Jesus says' = 'book of ReveLam_22:12 Jesus'
Call DoFindReplace("ReveLam_", "Rev_", True, False, False)

'Ezekiel Eze Ezequiel
StatusBar = "DCox: Replacing Ezekiel"
Call DoFindReplace("([eE]{1}[zZ]{1}[eEkK]{1,2}[iIeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Eze_\2:\3", True, False, False)
Call DoFindReplace("([eE]{1}[zZ]{1}[eEqQ]{1,2}[uUiIeElL .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Eze_\2:\3", True, False, False)

'Daniel Dan
StatusBar = "DCox: Replacing Daniel"
Call DoFindReplace("([dD]{1}[aAnN]{1,2}[iIeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Dan_\2:\3", True, False, False)
' Hosea moved to end because of XXXos conflicts
'Joel Joe
StatusBar = "DCox: Replacing Joel"
Call DoFindReplace("([jJ]{1}[oOeElL .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Joe_\2:\3", True, False, False)

'Amos Amo
StatusBar = "DCox: Replacing Amos"
Call DoFindReplace("([aA]{1}[mM]{1}[oO]{1}[óÓsS .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Amo_\2:\3", True, False, False)

'Obadiah Oba
StatusBar = "DCox: Replacing Obadiah"
Call DoFindReplace("([oO]{1}[bB]{1}[aAdDiIhH .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Oba_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([aA]{1}[bB]{1}[dDiIíÍaAsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Oba_\2:\3", True, False, False)

'Jonah Jon Confusion with John
StatusBar = "DCox: Replacing Jonah"
Call DoFindReplace("([jJ]{1}[oO]{1}[nN]{1}[aAáÁhHsS .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Jon_\2:\3", True, False, False)

'Micah Mic
StatusBar = "DCox: Replacing Micah"
Call DoFindReplace("([mM]{1}[iI]{1}[cCaAhH .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Mic_\2:\3", True, False, False)
Call DoFindReplace("([mM]{1}[iI]{1}[qQuUeEaAsS .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Mic_\2:\3", True, False, False)

'Nahum Nah
StatusBar = "DCox: Replacing Nahum"
Call DoFindReplace("([nN]{1}[aAhH]{1,2}[uUmM .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Nah_\2:\3", True, False, False)

'Hababbuk Hab
StatusBar = "DCox: Replacing Hababbuk"
Call DoFindReplace("([hH]{1}[aAbB]{1,2}[aAkKuUcC .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Hab_\2:\3", True, False, False)

'Zephaniah Zep
'therefore also in v. 5' = 'therefore alZep_5:5'
StatusBar = "DCox: Replacing Zephaniah"
Call DoFindReplace("([zZ]{1}[eEpP]{1,2}[hHaAnNiI]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "Zep_\2:\3", True, False, False)
Call DoFindReplace("([sS]{1}[oO]{1}[fF]{1}[aAnNiIíïsS .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Zep_\2:\3", True, False, False)

'Haggai Hag
StatusBar = "DCox: Replacing Haggai"
Call DoFindReplace("([hH]{1}[aAgG]{1,2}[gGaAiI .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Hag_\2:\3", True, False, False)
Call DoFindReplace("([hH]{1}[aAgG]{1,2}[eEoO .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Hag_\2:\3", True, False, False)

'Zecariah Zec
StatusBar = "DCox: Replacing Zecariah"
' Confusion Zecariah with Zephaniah
Call DoFindReplace("([ZzeE]{1,2}[cC][aArRiIhH., ]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Zec_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([Zz]{1}[aA]{1}[cC]{1}[aArRíÍiIsS., ]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Zec_\2:\3", True, False, False)

'Malachi Mal
' Malachi 2:16
StatusBar = "DCox: Replacing Malachi"
Call DoFindReplace("([mMaA]{1,2}[lL]{1}[aAcChHiI., ]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Mal_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([mMaA]{1,2}[lL]{1}[aAqQuUíÍiIsS., ]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "Mal_\2:\3", True, False, False)


' New Testament New Testament New Testament New Testament New Testament New Testament New Testament
' Parameters (below) 1. text to search for 2. replacement text 3. matchwildcards 4. Format

'Matthew Mat
StatusBar = "DCox: Replacing Matthew"
Call DoFindReplace("([mM]{1}[aAtT]{1,2}[tThHeEwWoO .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Mat_\2:\3", True, False, False)

'Mark Mar
StatusBar = "DCox: Replacing Mark"
Call DoFindReplace("([mM]{1}[aA]{1}[rR]{1}[kK .,]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Mar_\2:\3", True, False, False)
Call DoFindReplace("([mM]{1}[aA]{1}[rR]{1}[cCoOuUsS .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Mar_\2:\3", True, False, False)

' Moved before Canticles because of conflict Lucas - LuSon_

'John moved to End because of doing 1 John's and corrupting.

'1Thes and 2Thes before Acts because hes
'1 Thessalonians 1Th
StatusBar = "DCox: Replacing 1 Thessalonians"
Call DoFindReplace("(1[sStT., ]{1,4}[Tt]{1}[hH]{1}[eEsSaAlLoOnNiI .,]{13})([0-9]{1,3}):([0-9-]{1,7})", "1Th_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(1[tT°ºª. ]{1,4}[eE]{1}[sS]{1}[aAlLoOnNiIcCeEsS .,]{1,13})([0-9]{1,3}):([0-9-]{1,7})", "1Th_\2:\3", True, False, False)
Call DoFindReplace("(1[tT°ºª. ]{1,4}es[. ]{1,2})([0-9]{1,3}):([0-9-]{1,7})", "1Th_\2:\3", True, False, False)
' FIXERROR 1Thes. 5:2-3; 2Thes. 1:7-9 not converted

'2 Thessalonians 2Th
StatusBar = "DCox: Replacing 2 Thessalonians"
Call DoFindReplace("(2[nNdD., ]{1,4}[Tt]{1}[hH]{1}[eEsSaAlLoOnNiI .,]{1,13})([0-9]{1,3}):([0-9-]{1,7})", "2Th_\2:\3", True, False, False)
Call DoFindReplace("([Ii]{1}[Ii., ]{3}[Tt]{1}[hH]{1}[eEsSaAlLoOnNiI .,]{13})([0-9]{1,3}):([0-9-]{1,7})", "2Th_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[tT°ºª. ]{1,4}[eE]{1}[sS]{1}[aAlLoOnNiIcCeEsS .,]{1,13}) ([0-9]{1,3}):([0-9-]{1,7})", "2Th_\2:\3", True, False, False)
Call DoFindReplace("(2[tT°ºª. ]{1,4}e[s. ]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "2Th_\2:\3", True, False, False)

'Acts Act
StatusBar = "DCox: Replacing Acts"
'FIXERROR 2TAct_1:7-9
Call DoFindReplace("([aA]{1}[cC]{1}[tT]{1}[sS .,]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Act_\2:\3", True, False, False)
Call DoFindReplace("([hH]{1}[eEcC]{1,2}[hHoOsS .,]{3,5})([0-9]{1,3}):([0-9-]{1,7})", "Act_\2:\3", True, False, False)
Call DoFindReplace("Ac([0-9]{1,3}):([0-9-]{1,7})", "Act_\1:\2", True, False, False)
Call DoFindReplace("2TAct_", "2Ti_", True, False, False)

'Romans Rom
StatusBar = "DCox: Replacing Romans"
Call DoFindReplace("([rR]{1}[oOmM]{1,2}[oOaAnNsS., ]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Rom_\2:\3", True, False, False)
Call DoFindReplace("([rRmM]{2}[., ]{1,3})([0-9]{1,3}):([0-9-]{1,7})", "Rom_\2:\3", True, False, False)
'ERRORFIX 2PedRom_ -
Call DoFindReplace("PedRom_", "Peter ", True, False, False)

'2 Corinthians 2Co
StatusBar = "DCox: Replacing 2 Corinthians"
Call DoFindReplace("(2[nNdD. ]{1,4}[cC]{1}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "2Co_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[Cc. ]{1,3}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "2Co_\2:\3", True, False, False)
'FIXERROR 2Cor. 4.4
Call DoFindReplace("(2[Cc. ]{1,3}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "2Co_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[°ºª. ]{1,3}[cC]{1}[oO]{1}[rRiInNtToOsS .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "2Co_\2:\3", True, False, False)

'1 Corinthians 1Co
StatusBar = "DCox: Replacing 1 Corinthians"
Call DoFindReplace("(1[sStT. ]{1,4}[cC]{1}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "1Co_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[Cc. ]{1,3}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "1Co_\2:\3", True, False, False)
'FIXERROR 1Cor. 4.4
Call DoFindReplace("(1[Cc. ]{1,3}[oO]{1}[rRiInNtThHaAsS .,]{1,11})([0-9]{1,3}):([0-9-]{1,7})", "1Co_\2:\3", True, False, False)
'Levítico -> Levít1Co_
Call DoFindReplace("Levít1Co_", "Lev_", True, False, False)
'Spanish
Call DoFindReplace("(1[°ºª. ]{1,3}[cC]{1}[oO]{1}[rRiInNtToOsS .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "1Co_\2:\3", True, False, False)

' Moved to before Lamentations

'Ephesians Eph
StatusBar = "DCox: Replacing Ephesians"
Call DoFindReplace("([eE]{1}[pP]{1}[hHeEsSiIaAnN .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "Eph_\2:\3", True, False, False)
Call DoFindReplace("([eE]{1}[fF]{1}[eEsSiIoO .,]{1,7})([0-9]{1,3}):([0-9-]{1,7})", "Eph_\2:\3", True, False, False)

' Philippians moved to before Philemon for comparison purposes

'Colossians Col
StatusBar = "DCox: Replacing Colossians"
Call DoFindReplace("([cC]{1}[oO]{1}[lL]{1}[oOsSeEiIaAnN .,]{1,9})([0-9]{1,3}):([0-9-]{1,7})", "Col_\2:\3", True, False, False)

'1 & 2 Timothy Prep
Call DoFindReplace("[iI]{1} Tim", "1Tim", True, False, False)
Call DoFindReplace("[iI]{2} Tim", "2Tim", True, False, False)

'2 Timothy 2Ti
StatusBar = "DCox: Replacing 2 Timothy"
Call DoFindReplace("(2[nNdD .]{1,4}[tT]{1}[iImMoOtThHyY .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ti_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[tT .]{1,3}[iImMoOtThHyY .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ti_\2:\3", True, False, False)
'FIXERROR 2Tim. 2:15.
Call DoFindReplace("(2[tT]{1}[iImMoOtThHyY .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ti_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[ºª .]{1,3}[tT]{1}[iImMoOtTeE .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "2Ti_\2:\3", True, False, False)

'1 Timothy 1Ti
StatusBar = "DCox: Replacing 1 Timothy"
Call DoFindReplace("(1[sStT .]{1,4}[tT]{1}[iImMoOtThHyY .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "1Ti_\2:\3", True, False, False)
'FIXERROR 1Tim. 2:15.
Call DoFindReplace("(1[tT]{1}[iImMoOtThHyY .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "1Ti_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(1[ºª .]{1,3}[tT]{1}[iImMoOtTeE .,]{1,8})([0-9]{1,3}):([0-9-]{1,7})", "1Ti_\2:\3", True, False, False)

'Titus Tit
StatusBar = "DCox: Replacing Titus"
Call DoFindReplace("([tT]{1}[iI]{1}[tTuoOUsS .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Tit_\2:\3", True, False, False)

'Philippians Php
StatusBar = "DCox: Replacing Philippians"
Call DoFindReplace("([pP]{1}[hH]{1}[iI]{1}[lLiIpPaAnNsS .,]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "Php_\2:\3", True, False, False)
Call DoFindReplace("(Php) ([0-9]{1,3}):([0-9-]{1,7})", "Php_\2:\3", True, False, False)
Call DoFindReplace("(Php.) ([0-9]{1,3}):([0-9-]{1,7})", "Php_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([fF]{1}[iI]{1}[lLiIpPeEnNsS .,]{1,10})([0-9]{1,3}):([0-9-]{1,7})", "Php_\2:\3", True, False, False)

'Philemon Phm Philemon will distinguish from Philippians by the m or the e.
StatusBar = "DCox: Replacing Philemon"
Call DoFindReplace("([pP]{1}[hH]{1}[iIlLeEmMoOóÓnN .,]{1,})([0-9]{1,3}):([0-9-]{1,7})", "Phm_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([fF]{1}[iI]{1}[lL]{1}[eEmMoOóÓnN .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Phm_\2:\3", True, False, False)

'Heb Hebrews
StatusBar = "DCox: Replacing Hebrews"
Call DoFindReplace("([hH]{1}[eEbB]{1,2}[rReEwWsSoO .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Heb_\2:\3", True, False, False)

'James Jas
StatusBar = "DCox: Replacing James"
Call DoFindReplace("([jJ]{1}[aAmM]{2}[eEsS .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Jas_\2:\3", True, False, False)
'Spanish Santiago
Call DoFindReplace("([sS]{1}[aAnNtT]{1,3}[iIaAgGoO .,]{1,6})([0-9]{1,3}):([0-9-]{1,7})", "Jas_\2:\3", True, False, False)

'1 Peter 1Pe
StatusBar = "DCox: Replacing 1 Peter"
Call DoFindReplace("(1[sStT .][{1,4}[pP]{1}[eEtT]{1,2}[eErR .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Pe_\2:\3", True, False, False)
Call DoFindReplace("(1[sStT .][{1,4}[pP .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Pe_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[pP .][{1,2}[eEtT]{1,2}[eErR .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Pe_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(1[°ºª .][{1,3}[pP]{1}[eEdD]{1,2}[rRoO .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Pe_\2:\3", True, False, False)
Call DoFindReplace("(1[pP]{1}[eEdD]{1,2}[rRoO .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "1Pe_\2:\3", True, False, False)

'2 Peter 2Pe
StatusBar = "DCox: Replacing 2 Peter"
Call DoFindReplace("(2[nNdD .]{1,4}[pP]{1}[eEtT]{1,2}[eErR .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)
Call DoFindReplace("(2[pP]{1}[eEtT]{1,2}[eErR .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)
Call DoFindReplace("(2[nNdD .]{1,4}[pP .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[pP .][{2,3}[eEtT]{1,2}[eErR .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[°ºª .][{1,3}[pP]{1}[eEdD]{1,2}[rRoO .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)
Call DoFindReplace("(2[pP]{1}[eEdD]{1,2}[rRoO .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "2Pe_\2:\3", True, False, False)

'1 John 1Jn
StatusBar = "DCox: Replacing 1 John"
Call DoFindReplace("(1[sStT. ]{1,4}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Jn_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[. ]{1,2}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Jn_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(1[°ºª. ]{1,4}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Jn_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[. ]{1,2}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "1Jn_\2:\3", True, False, False)

'2 John 2Jn
StatusBar = "DCox: Replacing 2 John"
Call DoFindReplace("(2[nNdD. ]{1,4}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[. ]{1,2}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(2[°ºª. ]{1,4}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)
Call DoFindReplace("([iI]{1}[iI]{1}[. ]{1,2}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)

'3 John 3Jn
StatusBar = "DCox: Replacing 3 John"
Call DoFindReplace("(3[rRdD. ]{1,4}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "3Jn_\2:\3", True, False, False)
Call DoFindReplace("(III[. ]{1,2}[jJ]{1}[oOhHnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "3Jn_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(3[°ºª. ]{1,4}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)
Call DoFindReplace("(III[. ]{1,2}[jJ]{1}[uUaAnN .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "2Jn_\2:\3", True, False, False)

'Jude Jud
StatusBar = "DCox: Replacing Jude"
Call DoFindReplace("(Jude) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)
Call DoFindReplace("(Jud) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)
Call DoFindReplace("(Jud.) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)
Call DoFindReplace("(Jd) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)
Call DoFindReplace("(Jd.) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(Judas) ([0-9]{1,3}):([0-9-]{1,7})", "Jud_\2:\3", True, False, False)

'This will not catch Jud 6:34 (Judges)
' Jude has 1 chapter and 25 verses
' Judges has 21 chapters
' This is a point of confusion. Some people may abbreviate Judges with Jud, and if it is Judges 1, there is no way to tell the difference.
Call DoFindReplace("Jud_([2-9]{1}):([0-9-]{1,7})", "Jdg_\1:\2", True, False, False)
Call DoFindReplace("Jud_10:([0-9-]{1,7})", "Jdg_10:\1", True, False, False)
Call DoFindReplace("Jud_(2[0-9]{1}):([0-9-]{1,7})", "Jdg_\1:\2", True, False, False)

'John Joh
StatusBar = "DCox: Replacing John"
Call DoFindReplace("([jJ]{1}[Oo]{1}[hHnN.]{1,2}) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jhn) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jhn.) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jn) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jn.) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("(Juan) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jua) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)
Call DoFindReplace("(Jua.) ([0-9]{1,3}):([0-9-]{1,7})", "Joh_\2:\3", True, False, False)

'Hosea Hos (Efesios = EfesiHos)
StatusBar = "DCox: Replacing Hosea"
Call DoFindReplace("Ho ([0-9]{1,3}):([0-9-]{1,7})", "Hos_\1:\2", True, False, False)
Call DoFindReplace("([hH]{1}[oO][sS][eEaA .,]{1,4})([0-9]{1,3}):([0-9-]{1,7})", "Hos_\2:\3", True, False, False)
'Spanish
Call DoFindReplace("([oOóÓ]{1}[sS]{1,2}[eEaAsS .,]{1,5})([0-9]{1,3}):([0-9-]{1,7})", "Hos_\2:\3", True, False, False)

' Fix Exo_4:1--;
Call DoFindReplace("--;", "-- ", True, False, False)

'Fix one Chapter Books
StatusBar = "DCox: Replacing Fixing One Chapter book References like Obadiah 3."
Call DoFindReplace("Oba ([0-9-]{1,7})([,;.\!? ]{1,2})", "Oba_1:\1\2", True, False, False)
Call DoFindReplace("Obad ([0-9-]{1,7})([,;.\!? ]{1,2})", "Oba_1:\1\2", True, False, False)
Call DoFindReplace("Obadiah ([0-9-]{1,7})([,;.\!? ]{1,2})", "Oba_1:\1\2", True, False, False)
Call DoFindReplace("Phm ([0-9-]{1,7})([,;.\!? ]{1,2})", "Phm_1:\1\2", True, False, False)
Call DoFindReplace("Philemon ([0-9-]{1,7})([,;.\!? ]{1,2})", "Phm_1:\1\2", True, False, False)
Call DoFindReplace("2Jn ([0-9-]{1,7})([,;.\!? ]{1,2})", "2Jn_1:\1\2", True, False, False)
Call DoFindReplace("2John ([0-9-]{1,7})([,;.\!? ]{1,2})", "2Jn_1:\1\2", True, False, False)
Call DoFindReplace("2 John ([0-9-]{1,7})([,;.\!? ]{1,2})", "2Jn_1:\1\2", True, False, False)
Call DoFindReplace("3Jn ([0-9-]{1,7})([,;.\!? ]{1,2})", "3Jn_1:\1\2", True, False, False)
Call DoFindReplace("3John ([0-9-]{1,7})([,;.\!? ]{1,2})", "3Jn_1:\1\2", True, False, False)
Call DoFindReplace("3 John ([0-9-]{1,7})([,;.\!? ]{1,2})", "3Jn_1:\1\2", True, False, False)
Call DoFindReplace("Jud[e ]{1,2}([0-9-]{1,7})([,;.\!? ]{1,2})", "Jud_1:\1\2", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 1"
' Double verse numbers like Gen. 1:4,7 First line for Gen Gen 12:1, 12:14, Second 12:1, 12
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 2"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 3"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 4"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 5"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 6"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 7"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 8"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 9"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

StatusBar = "DCox: Fixing Gen 1:4,7 and skipped book references Gen 1:1; 12:3 Pass 10"
' Double verse numbers like Gen. 1:4,7
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[,; ]{1,2}([0-9]{1,3}):([0-9-]{1,7})", "\1_\2:\3;" + " \1_\4:\5", True, False, False)
Call DoFindReplace("([A-z0-9]{1,3})_([0-9]{1,3}):([0-9-]{1,7})[, ]{1,2}([1-9]{1,3})", "\1_\2:\3;" + " \1_\2:\4", True, False, False)

' Any references to the Book of Mormon will trip this Macro up.
' Jarom -> JaRom_, Nephi -> NEph_, Ether -> EtHeb_, Alma -> ALam_, Jacob -> JaOba_,
Call DoFindReplace("JarMormon777", "Jarom", True, False, False)
Call DoFindReplace("NepMormon777", "Nephi", True, False, False)
Call DoFindReplace("EthMormon777", "Ether", True, False, False)
Call DoFindReplace("AlmMormon777 ", "Alma ", True, False, False)
Call DoFindReplace("JacMormon777 ", "Jacob ", True, False, False)
' Green Macro
' Macro grabada el 26/11/2007 por David R. Cox
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([A-Za-z0-9]{1,3})_([0-9]{1,3}):([0-9\-\-]{1,7})"
.Replacement.Text = "^&"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.Replacement.Font.color = wdColorGreen
.Replacement.Font.Underline = True
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey unit:=wdStory

StatusBar = "DCox: Versify Macro Finished..."
End Sub