If the SETTING for first page and OddEven are unchecked (in Page Setting), then Primary is displayed for all pages in the section. Obviously if First Page is checked, then FirstPage is displayed; if Different Odd Even is checked OddEven is displayed for Even pages, and Primary is displayed for odd pages.
So, if I check (through the code) the page settings of the document, I should be able to find out whether First Page or OddEven is checked, and therefore use it (or not) in my code?

It does select the whole header, but I never used that in my code
Humpf... you're right, I copied the first part (oFF.Range) and selected the header instead.

So there could be these comment tags in the header? As well as textboxes. This adds a fairly large amount of complexity. I am still confused about things. Are these `tags`to remain...or not.
Basically, anything that may exist in a Word file may happen to be in the documents processed by the algorithm, so yes, text boxes should be checked in headers, BUT I am not worrying about those right now, since I already wrote a while ago a procedure that goes through each text box (in the headers/footers and in the main body), so I will implement this later on, once the main part related to the headers is fixed.
As for tags, my first point is to:
1)a) Make sure tags are found in an even number (if both opening/closing tags are the same),
OR
1b) Make sure tags are found in the correct order (i.e. opening tag, always followed by a closing tag BEFORE another opening tag is found, if both tags are different)
2) Delete those tags and highlight text in-between (I know how to do it)

So, I'd love to stick to your great procedure, but my statement in 1b) makes me think I cannot process the algorithm "blindly", without checking the order first, in which case I need to consider some extra lines for that. I already got something working, but my code is being done with selections (which you want to avoid, as I understand) rather than actioning directly all headers.
Also, because text boxes may exist in headers, I guess that I cannot use the "oHF.Range.Text" function either...

Sorry for being so picky and making things complicated, but I must say that you're really kind, trying to help me with my issue!